私は毎日のcrontabタスクを受け取りました:
50 1 * * * sh /my_path/daily_task.sh > /tmp/zen_log 2>&1
このdaily_taskシェルスクリプトは、いくつかのpythonスクリプトを実行し、データファイルを生成します。
そして、それは二晩失敗します。しかし、朝に来たとき、pythonスクリプトを手動で実行して、データファイルを取得しました。または、日付を0 10 * * *
にのみ設定する新しいcrontabを設定しました。このcrontab成功します。
だから昨日は、cronタスクに> /tmp/zen_log 2>&1
を入れてエラーメッセージを表示します。
そして今朝、zen_logに次のエラーメッセージが表示されました。
/my_path/daily_task.sh: line 19: 12364 Killed /usr/local/bin/python2.7 my_python_script.py 2 mix > mix_hc_$datestamp 2>&1
いくつかのプロセスが殺されたようですか?しかし、これはline 19: 12364 Killed
とはどういう意味ですか?
PS:
今日、1分前にpythonスクリプトを手動で実行すると、次のようになりました:/usr/local/bin/python2.7 my_python_script.py 2 mix > mix_hc_$datestamp 2>&1 Killed
多くの場合、アプリケーションがkilled
であるときは、常に/var/log/messages
ファイル。カーネルがプロセスを強制終了しているかどうかを確認します。私の会社が主にJavaアプリケーションを使用しているため、開発者が公開することは非常に一般的であるため、(私の経験上)最も一般的なトリガーは常にメモリ不足(OOM)エラーが原因でしたOOMイベントをトリガーする不正なコード更新。
OSに利用可能なリソースが最も多いときにタスクをスケジュールすることが、おそらくPMほとんどの人がシステムジョブの課税をスケジュールしたい場合)ではなく、AMタイムスロットで成功する理由です。これに対する簡単な解決策は、システムリソースを増やす、コードに割り当てられるリソースを制限する、またはジョブがスケジュールされているときに移動して、競合しないようにします。