さて、ここに私の問題があります。最近、サーバーを更新し、自動アナウンスを行うために使用されるjspファイルを変更しました。 crontabにはすべての.shファイルがリストされ、.shファイルはjspファイルを実行してアナウンスを表示します。
Jspファイルの更新が完了したら、サーバーを再起動しましたが、それ以降、アナウンスの実行が停止しました。 PuTTY経由で.shファイルを手動で実行できますが、jspファイルに加えた変更は問題にならないため、完全に正常に動作します。
ここに投稿する前に調査を行い、syslogでcronエントリを確認しました。サーバーを再起動するまで、cronサービスは正常に実行されていました。再起動後、syslogにcronのエントリはありません。
サーバーを再起動してみました。また、cronサービスを再起動しました。サービスを完全に停止して、効果なしで再起動しました。サーバーの更新中にcronとは関係なく、操作ファイルのいずれかが変更されたため、cronサービスが突然機能しなくなる理由がわかりません。
なぜ機能しなくなったのかについての提案はありますか? Ubuntu Server 11.10を使用しています
1。rootを含むすべてのユーザーのすべてのcronジョブを書き留めます、例:
ルートのcrontabをリストするには
Sudo crontab -l
Crontabをリストするには
crontab -l
2。次を使用して、すべてのユーザーのcrontabを完全に削除します
ルートのcrontabを削除するには
Sudo crontab -r
Crontabを削除するには
crontab -r
。システムを再起動します
4。cron(できればルートのcron)にジョブを戻します。テキストファイルを作成してからcronをそのファイルにポイントするか、手動で行います。
手動でセットアップするには
Sudo crontab -e
Cronがテキストファイルを指すようにするには
Sudo crontab <filename>
論理的には、できれば発生順に入力します。たとえば、上記の別の(時間内に)場所の前に実行されるジョブがある場合
Cronファイルまたはcrontabには、次の形式のエントリが必要であることに注意してください
m h dom mon dow full path command
たとえば、週末を除く毎日午後2時30分にシャットダウンすると、
30 14 * * 2,3,4,5,6 /sbin/shutdown
別の例では、毎週月曜日の午前2時にスクリプトファイル(test.sh-/ usr/local/myScriptsフォルダーにあります)を実行します。
0 2 * * 2 /usr/local/myScripts/test.sh
一度cronで同じ問題が発生しました。ユーザーのcronを削除し、システムを再起動してから再作成する必要があることをフォーラムで読んだことを覚えています。
スクリプトが対話型端末から実行されており、crontabから実行されていない場合、これは典型的な環境問題です。
Cronは、ほとんど空の環境でプログラムを実行します。
Crontabで、スクリプトの最後に>/tmp/script.log 2>&1
を追加して、ログファイルのエラーをキャッチしてください。
また、env -i
を使用してスクリプトを実行し、空の環境で適切に実行されることを確認することもできます。 (env -i /you/script.sh
)
PATH環境変数にいくつかのエントリを追加する必要がある場合があります。