crontab踩坑
最近使用crontab处理一下定时任务,但是发现总会碰到各种坑,这里记录一下踩坑过程。
1. 创建定位任务
创建定时任务有两种方式:一种是命令方式,一种是直接编辑文件
方式1
终端输入:crontab -e命令
输入你的定时任务,如:*/2 * * * * echo "Hello world!" >> /tmp/cron_log.txt #表示每分钟执行一次该任务
保存退出
方式2
vim /var/spool/cron/crontabs/root # 由于我是使用容器操作的,用户默认是root,若root文件不存在,则创建之
输入你的定时任务,如:*/2 * * * * echo "Hello world!" >> /tmp/cron_log.txt #表示每分钟执行一次该任务
保存退出
2.启动定时任务
service cron start # 可通过service cron status/stop/restart/reload等命令进程查看状态/停止定时任务/重启服务/重新加载定时任务
3. 问题总结
3.1 定时任务不执行
启动定时任务后,有时会发现定位任务并没有执行,此时需要查看日志,cron的日志在/var/log/cron.log中可以查看,如:
在ubuntu系统默认是不打开cron日志的,也就无法查看/var/log/cron.log(找不到该文件),要查看则需要打开相应的配置。
vim /etc/rsyslog.d/50-default.conf
打开文件,在文件中找到cron.*,把前面的#去掉,保存退出
重启rsyslog服务
但是有时会提示无rsyslog服务,此时需要先安装rsyslog
3.2 安装rsyslog
apt-get install rsyslog
修改 /etc/rsyslog.d/50-default.conf, 在文件中找到cron.*,把前面的#去掉
启动服务
启动rsyslog碰到问题
service rsyslog start
启动rsyslog可能会碰到一下问题
rsyslogd: imklog: cannot open kernel log (/proc/kmsg): Operation not permitted.
解决方案:
1. vim /etc/rsyslog.conf # 打开该文件
2. 找到 $PrivDropToUser syslog and $PrivDropToGroup syslog 将其注释掉
3. service rsyslog restart # 重启 rsyslog
3.3 依然不执行该文件
重新编辑crontab定时任务文件,如下:
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
*/2 * * * * echo "Hello world!" >> /tmp/cron_log.txt #表示每分钟执行一次该任务
来源:CSDN
作者:qq_42693848
链接:https://blog.csdn.net/qq_42693848/article/details/103793165