docker怎么解决crontab不生效

网友投稿 4132 2022-10-07

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

docker怎么解决crontab不生效

解决方法:1、排查容器内“/etc/init.d/crond status”是否为running状态;2、修改“/etc/pam.d/crond”文件,将其中的“required”修改为“sufficient”;3、利用“/etc/init.d/crond restart”重新启动crond服务即可。

本教程操作环境: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

注意:在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视频教程》

php入门到就业线上直播课:查看学习

上一篇:win10专业版自带了docker吗
下一篇:运维必会的 Linux 压缩管理、进程管理、网络管理命令总结
相关文章

 发表评论

暂时没有评论,来抢沙发吧~