인스턴스가 종료하라는 지시를 받았을 때 PHP 스크립트를 실행하고 싶습니다. 물론 인스턴스가 실제로 종료되기 전에 말이죠. 내 특정 스크립트는 일부 로그 파일을 로컬 파티션에서 다른 서버로 푸시하려고 합니다.
이 프로세스가 어떻게 작동하는지에 대한 요점을 알고 있지만 몇 가지 설명이 필요합니다.
내가 어떻게 이해하는지. 내가 틀렸다면 정정해주세요.
- /etc/init.d에 실행 가능한 스크립트를 만듭니다(/etc/init.d/push-logs라고 부르겠습니다).
- /etc/rc0.d(종료) 및 /etc/rc6.d(재부팅)에서 /etc/init.d/push-logs에 대한 심볼릭 링크를 만듭니다. 이름은 KXXpush-logs여야 합니다.
내 질문은 다음과 같습니다.
- 물론이죠. 제가 올바르게 이해하고 있나요?
- 위 #2의 경우 - XX가 낮을수록 더 좋은 것 같습니다. 사용할 수 있는 숫자가 너무 낮은가요? 다른 스크립트와 번호를 공유해도 문제가 되나요?
- /etc/init.d/push-logs의 스크립트는 표준 init.d 템플릿(시작/중지 등 명령 지원)을 따라야 합니까? 이것은 내 사용 사례에는 실제로 적용되지 않습니다. 가능하다면 스크립트를 다음과 같이 만들고 싶습니다.
#!/bin/sh # # Run PHP file prior to shutdown # /usr/bin/php /path/to/php_file.php
답변1
- 예, 심볼릭 링크 이름은
S
시작(K
Kill)의 경우 -로 시작해야 합니다. - 두 자리 숫자는 스크립트 실행 순서를 지정하며 가장 낮은 숫자가 먼저 실행됩니다.
service push-logs start
예, Linux는 심볼릭 링크 와 동등한 기능을 실행하기 때문입니다S
.
답변2
CentOS에서는 일치하는 파일도 필요합니다./var/lock/subsys/
/var/lock/subsys/push-logs
https://unix.stackexchange.com/questions/114274/an-init-script-does-not-get-called-on-shutdown
이를 염두에 두고 시작 시 해당 파일에 접근하고 상태에서는 아무 작업도 수행하지 않는 가짜 서비스를 만드는 것이 더 쉬울 수 있습니다.