インスタンスがシャットダウンするように指示されたときに、もちろん実際にシャットダウンが完了する前に、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 テンプレート (start/stop などのコマンドをサポート) に従う必要がありますか? これは、私のユースケースには当てはまりません。可能であれば、スクリプトを次のようにしたいだけです。
#!/bin/sh # # Run PHP file prior to shutdown # /usr/bin/php /path/to/php_file.php
答え1
- はい、ただし、シンボリックリンク名は
S
Start の場合は - (K
Kill の場合は -)で始まる必要があります。 - 2 桁の数字はスクリプトの実行順序を指定します。最も小さい数字が最初に実行されます。
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
それを念頭に置くと、起動時にそのファイルにアクセスし、ステータスでは何もしない偽のサービスを作成する方が簡単かもしれません...