docker中crontab無法執行


1、下載的鏡像是ubuntu最簡版,默認沒有安裝crontab

2、業務需求需要crontab

 

最早解決方案

   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,運行成功

 

參考文檔:https://blog.csdn.net/u013091013/article/details/70939136

還有就是,將這一行添加到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

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM