我有一个每日 crontab 任务:
50 1 * * * sh /my_path/daily_task.sh > /tmp/zen_log 2>&1
这个 daily_task shell 脚本将运行一些 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 事件是很常见的。
在操作系统拥有最多可用资源时安排任务可能是它在上午时段取得成功的原因,而不是在下午时段取得成功的原因,因为大多数人喜欢安排繁重的系统作业。对此的简单解决方案是增加系统资源,限制分配给代码的资源,或者在安排作业时移动,以免它们发生冲突。