docker中无法使用crontab的问题

最近在docker里使用crontab设置定时任务,发现crontab到时间没有执行。

第一个想到的是时区问题,查看了一下时区,是UTC时区,赶紧改成了Asia/Shanghai

使用date命令查看,时间没问题了。设置个时间测试一下,结果仍然不执行。

检查crontab任务是否启动

一切正常啊,奇怪。

装上rsyslog并启动,查看相关日志:

里面说set_loginuid failed,这个似乎是个认证模块,因为安全原因,被docker默认禁用掉了。修改/etc/pam.d/cron,把下面这行注释掉(也可以使用更高的权限启动容器,比如gdb无法使用的情况):

也可以把中间的required修改为optional来解决。

重启cron,运行成功。

同样的,ssh也会有这样的问题,因为也用到了pam认证模块,可以参考下面给出的链接来解决。

参考:

docker容器中crontab无法正常运行解决方案
Dockerize an SSH service

环境参考:

Docker版本:1.13.1
系统:archlinux

发表评论

电子邮件地址不会被公开。 必填项已用*标注