docker怎么解決crontab不生效

解決方法:1、排查容器內“/etc/init.d/crond status”是否為running狀態;2、修改“/etc/pam.d/crond”文件,將其中的“required”修改為“sufficient”;3、利用“/etc/init.d/crond restart”重新啟動crond服務即可。

docker怎么解決crontab不生效

本教程操作環境:linux7.3系統、docker19.03版、Dell G3電腦。

docker怎么解決crontab不生效

在docker中默認使用centos鏡像,在該鏡像中沒有安裝crond,通過yum安裝成功后,crontab沒有生效。

1、首先排查容器內 /etc/init.d/crond status 是否為running狀態。

如果通過第一步還無法解決,參考下面的辦法:

2、修改/etc/pam.d/crond文件,將其中的required改為sufficient,然后重啟crond服務:/etc/init.d/crond restart

docker怎么解決crontab不生效

注意:在centos7的基礎鏡像里面好像沒有該問題。

擴展知識

最早解決方案

? ?1、在宿主機里面

???????1?3??*?*?*?root??cd?/data/wwwroot/xxx?&&?docker-compose?exec?app?php?think?xxx?>>?/var/log/crontab_xxx.log

? docker-compose exec app php think xxx一直執行不成功

? ?2、然后在容器里面安裝crontab,還是執行不成功,關鍵還沒有相關日志。檢查crontab也是啟動的。 /etc/init.d/cron status

? ?3、裝上rsyslog, apt-get install rsyslog, service rsyslog start

? ?查看 /var/log/syslog

Dec?25?09:07:07?1a8e4fd5c766?crontab[15120]:?(root)?BEGIN?EDIT?(root) Dec?25?09:07:34?1a8e4fd5c766?crontab[15120]:?(root)?REPLACE?(root) Dec?25?09:07:34?1a8e4fd5c766?crontab[15120]:?(root)?END?EDIT?(root) Dec?25?09:08:01?1a8e4fd5c766?cron[15100]:?(root)?RELOAD?(crontabs/root) Dec?25?09:08:01?1a8e4fd5c766?CRON[15133]:?Cannot?make/remove?an?entry?for?the?sp

? ?4、修改/etc/pam.d/cron

? ?注釋掉 session? ? required? ? ?pam_loginuid.so

? 5、重啟cron,運行成功

還有就是,將這一行添加到dockerfile中

RUN?sed?-i?'/session????required???pam_loginuid.so/c#session????required???pam_loginuid.so'?/etc/pam.d/crond

?crontab執行還遇到了一個坑,手動執行腳本沒有問題,因為讀取了環境變量,php要寫絕對路徑

?/usr/local/bin/php?think?xxx

推薦學習:《docker視頻教程

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享