(再)ブートが終了したことをサーバーから(うなり声で)通知してほしい。うなり声を送信するphpファイルの準備はできていますが、行を追加するファイルがわかりません。
SuSEの起動が完了した後にのみ実行されるようにコードを追加するためにどのファイルが必要ですか?
Suse Linux Enterprise 11 SP2(およびopenSUSE?)の新しい構文
最善の方法は、PHPスクリプトを呼び出すシェルスクリプトを作成することです。このシェルスクリプトのヘッダーには、次のコメントが必要です。
#!/bin/sh
### BEGIN INIT INFO
# Provides: nothing
# Required-Start: $all
# Default-Start: 3 5
# Default-Stop: 4
# Short-Description: single_line_description
# Description: multiline_description
### END INIT INFO
/etc/init.d/skeleton
には、典型的なテンプレート(説明コメントが多数含まれています)があります。このテンプレートには、PHPスクリプトをフックするために必要なコードが含まれています。PHPスクリプトを呼び出す必要がある開始ケースが表示されます。
必要になると思われないため、ヘッダー内のいくつかのオプションパラメータを破棄しました。
重要
少なくともスケルトンを使用して( initスクリプトのアクション を参照)、少なくとも開始ケースを実装することが重要です。最初のケースでは、それがスクリプトを呼び出す場所です。
ブートの最後に呼び出される小さなスクリプトの例を次に示します: 私の要点を参照 。 Default-Stopに無効な実行レベルを設定しましたが、シャットダウン中にスクリプトがまだ呼び出されています。とにかく、シャットダウン中の「開始」ケースのコードではなく、「停止」ケースのコードが実行されます。
スクリプトを作成したら、それを/etc/init.d
にコピーします。initスクリプトがboot-notificationと呼ばれていると想定して、(rootとして)次のようにします。
chown root:root boot-notification
chmod 0750 boot-notification
mv boot-notification /etc/init.d/
次に、initシステムにスクリプトを「登録」する必要があります。 insserv
コマンドを使用して(再びrootとして)、YaSTを使用できます。
insserv boot-notification
次に、各initレベルを調べることにより、スクリプトが最後に実行されるものの1つであることをさらに確認できます。ランレベル3のみを選択した場合、これを行うことができます。
ls -l /etc/init.d/rc3.d/S*
これにより、initスクリプトへのリンクのリストが返されます。スクリプトへのリンクは、リストの最後(またはその近く)にあるはずです。
注:より動的なinitスクリプトの記述方法を試してみたい場合は、次の2ページを読むことをお勧めします。
(open)SUSEは/etc/init.d/after.local
この目的のために。実行する必要があるコマンドをそのファイルに追加するだけです。これはSystemV initで正常に機能しますが、systemdでは、AFAIKを別の方法で解決する必要があることに注意してください。
OpenSUSE 12.2(Mantis)の場合、「ローカル後」のscriptは/etc/init.d/after-local
、そしてあなたはsystemctlを介してそれを有効にする必要があるかもしれません、このように...
enable /etc/init.d/after-localに、
systemctl enable after-local.service
ステータスの確認 /etc/init.d/after-localの、
systemctl status after-local.service
新しいinitスクリプトを追加することは、Suseでは非常に簡単です。
最善の方法は、PHPスクリプトを呼び出すシェルスクリプトを作成することです。このシェルスクリプトのヘッダーには、次のコメントが必要です。
#!/bin/sh
#chkconfig: 35 99 00
#description: Notify of boot completion
/etc/init.d/skeleton.compat
(chkconfig構文をサポートするもの)に、典型的なテンプレート(説明コメントのロード付き)があります。新しいLSB標準をサポートする7etc/init.d/skeleton
もありますが、説明が少し複雑ですより強力ですが、セットアップ方法を説明します。このテンプレートには、PHPスクリプトをフックするために必要なコードが含まれています。PHPスクリプトを呼び出す必要がある開始ケースが表示されます。
私があなたに与えた重要な番号はchkconfig line
にあります。
スクリプトを作成したら、それを/etc/init.d
にコピーします。initスクリプトがboot-notificationと呼ばれていると想定して、(rootとして)次のようにします。
# chown root:root boot-notification
# chmod 0750 boot-notification
# mv boot-notification /etc/init.d/
次に、initシステムにスクリプトを「登録」する必要があります。 chkconfig
コマンドを使用します(ここでもrootとして):
# chkconfig --add boot-notification
これが正しく考慮されていることを確認してください:
# chkconfig boot-notification
boot-notification on
見ればいいですよ!
次に、各initレベルを調べることにより、スクリプトが最後に実行されたものの1つであることをさらに確認できます。ランレベル3のみを選択した場合、これを行うことができます。
$ ls -l /etc/init.d/rc3.d/S*
これにより、initスクリプトへのリンクのリストが返されます。スクリプトへのリンクは、リストの最後(またはその近く)にあるはずです。
注:より動的なinitスクリプトの記述方法を試してみたい場合は、次の2ページを読むことをお勧めします。
それには2つの方法があることがわかりました。
Sudo crontab -e
次に入力
@reboot Sudo <command_to_execute_at_startup>