crontab不能在Centos Docker容器上工作

我想通过在Centos泊坞窗容器中的Crontab运行几个python脚本,但没有任何我已经尝试工作。

首先我安装了cron:

yum install vixie-cron 

然后我把它作为服务运行:

 /etc/init.d/crond start 

(我也跑了/sbin/service crond start,因为一些相关问题的答案build议如此)

ps aux | grep cron 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,但没有一个帮助。

有些答案build议写入/etc/crontab ..所以我甚至提出了条目: * * * * * root echo 'Blah' > var/log/cron.log there ..但是没有效果:(

经过一天浪费在次优谷歌和实验,这个难题的答案是注释掉 /etc/pam.d/crond (然后运行service crond restart )文件中的以下行:

 session required pam_loginuid.so 

这是因为一些Docker-Centos安全问题。 我没有进一步的细节,为什么这个工程。 (检查这个细节。)

此外,排除故障使我意识到一些可能是有用的陷阱:

  • 检查你是否有crond作为服务运行(如果没有,使用/etc/init.d/crond start

  • 你的crontab中的每一行都应该是一个换行符

  • 您的脚本和日志文件应具有适当的写入/执行权限

  • crontab文件不应该有奇怪的Windows环境字符(如^ M)

  • 在一些极less数情况下,crond可能与你的系统有不同的时区

  • 还要检查/etc/cron.allow and /etc/cron.deny文件来validation谁可以添加/编辑cron作业

你的一天能投入到更有成果的追求中,陌生人。

我build议在主机下运行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