【发布时间】:2021-03-23 12:35:15
【问题描述】:
正如标题中所写,我的 cron 作业脚本未执行时遇到了一些问题。我正在使用 CentOS 7。
我的 crontab -e 看起来像这样:
30 0 * * * /opt/abc/efg/cron_jobs.sh >> /opt/abc/logs/cron_jobs.log
我的 cron_jobs.sh 看起来像这样:
#!/bin/bash
#keep this script in efg folder
#run this daily through crontab -e
#45 0 * * * /opt/abc/efg/cron_job.sh
cd "$(dirname "$0")"
export PYTHONPATH=$PYTHONPATH:`pwd`
#some daily jobs script for abc
date
#send email to users whose keys will expire 7 days later
/usr/local/bin/python2.7 scripts/send_expiration_reminder.py -d 7
#send email to key owners whos keys will expire
/usr/local/bin/python2.7 scripts/send_expiration_reminder.py -d -1
# review user follow status daily task
# Need to use venv due to some library dependencies
/opt/abc/virtualenv/bin/python2.7 scripts/review_user_status.py
所以,我发现 /var/logs/cron 中的 cron 作业的日志表明 cron 相应地在上午 0:30 运行。
奇怪的是,我发现 /opt/abc/logs/cron_jobs.log 是空的,并且脚本似乎根本没有运行。它曾经在我重新输入 crontab(重新安装 cron 作业)之前输出一些日志,并替换了 cron_jobs.sh,所以我认为问题可能来自这些操作。
另外,我想知道是否有任何方法可以记录执行 python 脚本的错误。我一直在尝试运行 /opt/abc/virtualenv/bin/python2.7 scripts/review_user_status.py 但它似乎从未按预期工作(根本不运行 main 函数),并且没有任何日志输出。
我尝试在另一台机器上运行它并且它工作正常,所以我不确定 cron 作业出了什么问题。
这是我从 /var/log/cron 获得的日志的 sn-p,以显示 cron 调用了该作业:
Mar 22 18:32:01 web41 CROND[20252]: (root) CMD (/opt/abc/efg/cron_jobs.sh >> /opt/abc/logs/cron_jobs.log)
【问题讨论】:
-
添加命令
set -x以查看脚本运行时启动了什么 -
@Nigredon 在 shell 文件中?就像下面的 #!/bin/bash?
-
有趣的是,我尝试使用 bash cron_jobs.sh 运行 cron_jobs.sh,它似乎工作正常。但不同的是我在运行 bash 之前调用了 chmod +x cron_jobs.sh。
-
在
#!/bin/bash之后添加set -x。 -
以及如何检查您可以在unix.stackexchange.com/questions/42715/…中阅读的cron作业
标签: bash python-2.7 cron