簡體   English   中英

crontab 不適用於 Centos Docker 容器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM