もしDebian 7ホストされたVMと最新のcron
デーモンで実行されているサーバー(gasp)にバグがあるため、クローンが明確な理由なく実行を停止します。これは一度だけ発生するため、デバッグが困難です。
クローンが再びクラッシュして電子メール警告を送信した場合、クローンが自動的に再起動されるようにするにはどうすればよいですか?
答え1
いつでも確認できます監視装置プロジェクト。
サービスを再起動して追いつくことができます。
コメントで提案されているようにクローンを変更できない場合。
答え2
プロセスを監視して再起動するためにdaemontoolsのようなプログラムを実行することはできませんか?
実際、一部のコンピュータではそうします。 「daemontoolsに似たもの」は実際にスナックバッグしかし、daemontoolsファミリーの他のメンバーはGNUクローンを完全に管理できます。 (Vixie cronは別の話ですが、Debianを意味しています。)
GNU cronは、daemontoolsサービススイートの管理下で実行される最も単純なサービスの1つです。 Gerrit Papeの実行スクリプトコレクションには、noshツールセットに付属のサービスバンドルコレクションも含まれています。
つまり、GNU cronを再起動しなければならなかった記憶はありません。墜落したから。
最も重要なのは、サービス管理が単に自動的に再起動する以上のことです。これは返品ロギングとリソース制御に関して、両方ともタスク関連です。原因診断GNUクローンがクラッシュします。
問題の診断には以下が含まれます。
- コアダンプを有効にする
run
ために使用されるプログラムを編集します。softlimit
- スクリプト(またはそれに対応する項目)の編集
restart
...- ...デーモンが終了したか、または信号を介して終了したかどうかを確認します。
- ...コアダンプを収集します。
- ...警告を出し、電子メール通知を送信します。 (私は
restart
衝突/中断の最後の数行を私に電子メールで送信するスクリプトを設定したことがあります。)log/main/current
- ...再起動速度制限を調整します。
- GNU cronの別々のログとサービスマネージャの独自のログを読んで、デーモンが再起動される時期と頻度、出力されるエラーメッセージ(存在する場合)を確認してください。
追加読書
- ジョナサンデボインポラード(2015)。デーモンツールシリーズ。一般的な答え。
- ゲレットパフ。Debian パッケージ
- https://unix.stackexchange.com/a/283132/5132
- https://unix.stackexchange.com/a/283580/5132
答え3
crond
私を通しては監視できないので、次のようcrond
にします。
echo "while true; do if ! (ps aux |grep crond |grep -v grep); then /etc/init.d/crond start; fi && sleep 5; done &" >> /etc/rc.local
答え4
daemontools
、などを設置する必要はありませんrunit
。supervise
これらのツールは便利ですが、通常はcronだけを使用する必要がないユースケースをカバーしています。必要なものだけが必要で、initで簡単に処理できます。 /etc/inittabに追加:
cron:2345:respawn:/usr/sbin/crond -n
crond
まず、その-n
オプションがサポートされていることを確認してください。これは、分岐せずに前景に留まらないように指示します。 ** rcスクリプトでcrondを無効にする必要があります**。
/usr/lib/lsb/remove_initd /etc/init.d/crond
何らかの理由でcrondがstdoutまたはstderrとして出力する場合は、その出力を処理してラッパースクリプトを生成するラッパースクリプトを作成する必要があります。スクリプトを単純に保ちます。
#!/bin/sh
#crond-wrapper.sh
exec crond -n &>>/var/log/crond
あるいは、whileループ内で呼び出されるスクリプトを使用してinit.d/crond
既存のパッケージングスクリプトを変更できます。crond -n
ただし、この場合は、pid
後で使用するためにスクリプトを賢く保存する必要があります。