[OK]、Debian コンピュータで実行されているサービス (nagios) があり、コンピュータを再起動した後にのみ表示される非常に特定の問題を除いて、うまく動作します。この問題は、サービスを手動で再起動すると簡単に解決できます。問題自体があまりにも具体的で混乱するほど難解なので、実行する時間がありません(500を超えるチェックの1つがエラーを返しますが、nagiosで実行した場合のみ)。
次善策は、起動時にサービス自体を再起動し、毎回手動で実行する必要がないようにすることです。これまで、私は次の方法でこれを達成しようとしました。
/etc/rc.localに「/etc/init.d/nagios restart」を追加しました。ログを見るとうまくいきましたが、問題は解決しませんでした(まだ手動で実行する必要があります)。
nagios 開始時間を終了に移動します。 (update-rc.d nagios デフォルト 99 10)
rc.localに戻って修正します。今回は、ボックスの開始を20秒間遅らせる「スリープ20」行を追加します。
私が試す/見ることができる他のものはありますか?
答え1
延期したい初期化スクリプトに次のコメントブロックがあることを確認してください。
### BEGIN INIT INFO
# Provides: scriptname
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
このブロックはDebianで説明されているようにLSBInitスクリプトWikiは、nagiosスクリプトが実行される前に他の機能を起動する必要があることをinitサブシステムに伝えます。
そうする必要があるのは、Nagios initスクリプトを再起動する理由を指摘することだけです。ネットワークがまだ機能していないためですか? Webサーバーがまだ起動しているからですか?それとも、nfsはまだ同期されていませんか?
毎回nagiosを再起動する理由を理解する必要がありますが、このアプローチは現在の状況に最適なソリューションです。
答え2
再起動を手動で実行する必要がある場合は、ログイン時に設定したいくつかの変数によってスキャンが異なる場合があります。
手動で実行してもservice nagios restart
問題が解決するかどうかを確認するか/etc/init.d/nagios restart
、。
# Required-Start: $all
スクリプトを開始する前に、他のすべてのサービスが開始されたことを確認する方法です。ところでrc.local
、とにかくすべてのサービスが開始された後に実行されるようで、あまり役に立たないようです。