Docker下Ubuntu的定时任务

前面一篇文章中,我们己经在Docker中的Ubuntu中建立好了各种任务,比如nginx, sslh, ssh等等,域名什么的也配置好了。但是因为没有固定的IP地址,我们还是需要实现一个动态DDNS的功能,这个我们也通过脚本实现了,但是这个脚本需要定时运行,之前常用的方式是通过crontab建立一个周期性的任务,但是Docker中似乎没有这个,网上转了一圈发现可以通过如下的方式安装cron.

sudo apt install cron

熟练的加上一条任务:

*/10 * * * * /home/major/work/apps/ali_ddns.sh>/home/major/cron.log

加了之后,睡了一觉,NAS访问不了了,看了一圈,发现是DNS解析有问题,也就是相应的DNS记录并没有更新,这个cron也是完全没有Log,这个可咋整?网上又转悠了好久,发现如下的解决方法和/etc/pam.d/cron这个文件有关系,解决方法是把其中的一行进行注释就可以了:

# session    required     pam_loginuid.so

这样就可以正常的使用cron了,以后有需要就可以直接放到这里面就可以了。

需要说明的是Docker中,后面安装的一些服务,比如nginx, sslh, sshcron等都不会自动启动,没错cron也在里面,所以想通过@startup方式启动服务也是不可行的,因为我在Docker启动的时候默认是运行bash的,所以这些任务都不能自动启动,这个问题直到现在都还没有解决,一个可行的方法是通过自定义Docker镜像的方式,但是稍微有点麻烦,现在也没搞,后面再说吧,今天就先酱。

发表新评论