Docker容器内运行定时任务crontab
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker容器内运行定时任务crontab相关的知识,希望对你有一定的参考价值。
参考技术A 基础镜像: centos容器启动时执行
/usr/sbin/crond -i(后台执行)
即可。
对,就这么简单。
定义cron job有两种方式:
1、使用命令crontab -e;
2、vim编辑/etc/crontab;
其中,前者是在当前用户下的定时任务,不用加用户,后者只有root才可以编辑,需要多指定一个执行用户。
题外话,有人用systemctl start crond.service,来启动crond,这里有一个巨大的冲突,就是systemctl依赖initd进程,Linux操作系统的initd进程必须占用1号进程,而docker的启动脚本也是1号进程,虽然这个冲突可以通过/usr/sbin/systemd --system来避免,但执行systemctl命令还是可能有操作权限的问题,因此,直接启动crond即可。
centos7 ubuntu crontab定时任务
写shell脚本,crontab 定时运行 更改时区后,应该重启vi *.cron 编辑定时任务
crontab *.cron 添加定时任务
crontab -l 显示当前用户正在运行的定时任务
crontab -e 修改定时任务
crontab -r 删除定时任务
tail -f /var/log/cron 查看日志,可看执行情况
systemctl start crond.service 启动服务
systemctl stop crond.service 停止服务
systemctl restart crond.service 重启服务
systemctl status crond.service 查看状态
内容形如:
* * * * * 命令
对应:
分 时 日 月 周 命令
"*"代表所有的取值范围内的数字。特别要注意哦!
"/"代表每的意思,如"*/5"表示每5个单位
"-"代表从某个数字到某个数字
","分散的数字
例如:
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启apache
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启apache
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启apache。
以下为ubuntu下使用方案,基础操作与上面一致,但服务名称为cron:
cron 开启log服务
~$ sudo vi /etc/rsyslog.d/50-default.conf
#cron.* /var/log/cron.log //去掉#,开启log机制
~$ sudo service rsyslog restart 重启log
~$ sudo service cron restart 重启服务
另外:没有再centos7下尝试
1 * * * * /auto.sh >> /log.txt 2>&1
2>&1 将运行详细结果输入到log.txt中去。 解决No MTA installed, discarding output的问题。
以上是关于Docker容器内运行定时任务crontab的主要内容,如果未能解决你的问题,请参考以下文章