我正在尝试通过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
..但是没有效果:(
答案 0 :(得分:5)
在用Google Googling和实验进行了一天的浪费之后,这个难题的答案是评论文件/etc/pam.d/crond
中的以下行(然后运行service crond restart
):
session required pam_loginuid.so
这是因为Docker-Centos的一些安全问题。我没有进一步了解其原因。 (查看this了解详情。)
此外,对此进行故障排除让我意识到可能有用的一些问题:
检查您是否将crond作为服务运行(如果没有,请使用
/etc/init.d/crond start
)
crontab中的每一行都应该跟一个换行符
您的脚本和日志文件应该具有合适的写入/执行 权限
crontab文件不应该有奇怪的Windows环境字符 (如^ M)
在极少数情况下,crond可能与您的时区有不同的时区 系统
同时检查/etc/cron.allow and /etc/cron.deny
个文件以验证是谁
可以添加/编辑cron作业
可能你的日投入更多富有成效的追求,陌生人。
答案 1 :(得分:0)
我建议在主机下运行cron并在容器内运行命令
示例:
0 17 1 * * /usr/bin/docker exec container_name /root/proj/env/bin/python /root/proj/files/frontend/file1.py > /var/log/cron.log