[英]crontab not working on Centos Docker container
我正在嘗試通過Centos docker container 中的 Crontab運行一些 python 腳本,但我嘗試過的任何東西都不起作用。
首先我安裝了cron:
yum install vixie-cron
然后我將它作為服務運行:
/etc/init.d/crond start
(我還跑了/sbin/service crond
start 因為一些相關問題的答案是這樣建議的)
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:我瀏覽了大量相關的 QnA,但沒有一個有幫助。
一些答案建議寫入/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)
在極少數情況下,crond 的時區可能與您的系統不同
同時檢查/etc/cron.allow and /etc/cron.deny
文件以驗證誰可以添加/編輯 cron 作業
陌生人,願你的一天投入到更富有成果的追求中。
我建議在主機下運行 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.