毎日crontabジョブがあります。
50 1 * * * sh /my_path/daily_task.sh > /tmp/zen_log 2>&1
このdaily_taskシェルスクリプトはいくつかのPythonスクリプトを実行し、データファイルを生成します。
そして二日連続失敗した。ところで、朝に来てPythonスクリプトを手動で実行すると、データファイルが表示されます。または、日付のみが設定された新しいcrontabを設定しましたが、0 10 * * *
そのcrontabも機能しました。
> /tmp/zen_log 2>&1
だから昨日、エラーメッセージを受け取るためにcronジョブを実行しました。
今朝、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
意味しますか?
添付:
今日、数分前、Pythonスクリプトを手動で実行したときに、次のような結果が得られました。
/usr/local/bin/python2.7 my_python_script.py 2 mix > mix_hc_$datestamp 2>&1 Killed
答え1
通常、アプリケーションの実行中にカーネルがプロセスを終了することを確認するために、ファイルをすばやく調べることをお勧めkilled
します。/var/log/messages
私の経験によれば、最も一般的なトリガーは常にメモリ不足(OOM)エラーが原因で発生し、当社では主にJavaアプリケーションを使用しているため、開発者がOOMイベントをトリガーする誤ったコード更新をリリースすることが一般的です。
ほとんどの人が重いシステムタスクをスケジュールすることを好むので、オペレーティングシステムで利用可能なリソースが最も多いときにタスクをスケジュールすることが午後セッションではなく午前セッションに成功する可能性がある理由かもしれません。これに対する簡単な解決策は、システムリソースを増やしたり、コードに割り当てられているリソースを制限したり、タスクをスケジュールしたときに競合しないようにリソースを移動することです。