我试图通过Centos docker容器中的Crontab运行一些python脚本,但我没有尝试过任何工作.
首先我安装了cron:
yum install vixie-cron
然后我把它作为服务运行:
/etc/init.d/crond start
(我也跑了,/sbin/service crond
因为对相关问题的一些答案建议如此)
ps aux | grep cron
说明:
root 16917 0.0 0.0 23288 1252 ? Ss 18:53 0:00 crond root 16929 0.0 0.0 9720 836 pts/0 S+ 18:55 0:00 grep cron
crontab -l
好像:
0 17 1 * * /root/proj/env/bin/python /root/proj/files/frontend/file1.py > /var/log/cron.log 0 9 4 * * /root/proj/env/bin/python /root/proj/files/frontend/file2.py > /var/log/cron.log 0 17 15 * * /root/proj/env/bin/python /root/proj/files/frontend/file3.py > /var/log/cron.log 0 9 18 * * /root/proj/env/bin/python /root/proj/files/frontend/file4.py > /var/log/cron.log 0 14 * * * /root/proj/env/bin/python /root/proj/files/frontend/file5.py > /var/log/cron.log 0 8 * * * /root/proj/env/bin/python /root/proj/files/frontend/file6.py > /var/log/cron.log * * * * * echo 'Check!!' > /var/log/cron.log
所有python脚本和cron.log文件都有权限777
crontab中的最后一个条目只是检查是否有任何内容写入日志文件......但是没有任何内容写在那里.
不知道怎么解决这个问题?
PS:我查看了大量相关的QnAs,但没有一个帮助.
一些答案建议写/etc/crontab
...所以我甚至做了条目:* * * * * root echo 'Blah' > var/log/cron.log
那里......但没有效果:(
经过一天浪费在谷歌搜索和实验中,这个难题的答案是在文件中注释掉以下行/etc/pam.d/crond
(然后运行 service crond restart
):
session required pam_loginuid.so
这是因为Docker-Centos的一些安全问题.我没有进一步详细说明其原因.(检查此了解详情.)
此外,对此进行故障排除让我意识到一些可能有用的问题:
检查你是否将crond作为服务运行(如果没有,请使用
/etc/init.d/crond start
)
crontab中的每一行都应该跟一个换行符
您的脚本和日志文件应具有合适的写入/执行权限
crontab文件不应该有奇怪的Windows环境字符(如^ M)
在极少数情况下,crond可能与您的系统具有不同的时区
还要检查/etc/cron.allow and /etc/cron.deny
文件以验证谁可以添加/编辑cron作业
愿你的一天投入更多富有成效的追求,陌生人.