既然是再来一次定时任务,那我们就要有明确的目标以及观察点。来列列。
列列观察点
- 如何开启定时任务,开启多大频率或定时的任务,几种方式开启。
-
定时任务日志功能。(这样才能更好的找到问题的所在)
-
定时任务的执行用户。比如 root 用户,非 root 用户。这之间有什么影响和不一样。
-
额外, no login 用户的 shell 执行。
开启定时任务
方法 1:
# 编辑,并添加定时任务
vim /etc/crontab
方法 2:
# 给当前用户添加定时任务。如果是 root 用户登录的,就是给 root 用户添加定时任务(就是执行用户是 root)
crontab -e
# 给 nginx 用户添加定时任务(编写命令即可)
crontab -e -u nginx
给 root 用户添加定时任务的缺点是 root 用户产生的文件,其他用户默认是没权限去操作的。比如写了日志,其他用户想继续打开该日志来编写,是没办法操作的。除非改权限设置等操作。
方法 3:
vim cron.txt
# 将定时任务命令写在 cron.txt 里边,然后再执行
crontab cron.txt -u nginx
方法 4:
以上的方法,只是命令在其他 sh 文件里。
查看,重启,关闭
查看关闭:
# 查看当前用户执行的定时任务
crontab -l
# 查看 nginx 用户执行的定时任务
crontab -l -u nginx
# 删除当前用户执行的定时任务
crontab -r
# 删除 nginx 用户执行的定时任务
crontab -r -u nginx
重启:
//启动服务
service crond start
//关闭服务
service crond stop
//重启服务
service crond restart
日志
# 这里可以看到日志的
tail -f /var/log/cron
如果日志文件不存在(被删除了或啥的,请使用下面命令从新生起)
# 重启rsyslog服务:
service rsyslog restart
# 重启 cron
service cron restart
报错
如果使用 nginx 这种 nologin 用户执行定时任务会报错的。如下:
(CRON) ERROR chdir failed (/home/nginx): No such file or directory
这个时候,只需要在 home 目录下,创建个 nginx 文件夹就 ok 了。