crontab是Unix、Linux操作系统下用于设置周期性执行任务的指令,首先crontab分系统crontab和用户crontab,路径也不同,如下:
系统crontab:
路径:/etc/crontab
用户crontab:
路径:/var/spool/cron/当用户名
其次:要区分以下三个概念,不要混淆。
- cron:任务名称
- crond:任务守护进程,用于时刻检查crontab中预设的作业任务,可以通过ps -ef|grep crond查看进程是否启动。
- crontab:任务调度表,存放任务。
一、crontab常见命令
crontab [-u user] [-l | -r | -e] [-i]
-l:列出当前用户的计划任务。
-e:编辑当前用户的计划任务。
-r:删除当前用户的所有计划任务。即删除/var/spool/cron/USERNAME文件。
-u:管理指定用户的计划任务,仅root有权限。
-i:在使用-r选项删除所有任务时提示用户确认。
二、如何启动一个crontab定时任务
首在任务装载之前,我们执行以下命令:
crontab -l
此时crontab是空的,没有装载任何任务,下面我们往crontab里写一个定时任务:
1、创建一个名为cron的crontab文件,内容如下:
32 10 * * * /bin/echo ‘date’ > /dev/console
保存后,给此文件赋予可执行权限 chmod +x cron
2、装载任务
crontab cron
任务提交crontab之后,在/var/spool/cron路径下会生成cron的副本,以当前用户命名,如:我当前用户是root,此时在这个路径下,生成了root用户,内容跟cron文件的一模一样。
这样到点就开始执行了。
三、如何确定crontab任务是否到点执行,以及SHELL有无报错?
要判断crontab是否到点执行,我们需要查看:
more /var/log/cron
如果任务到点执行了,但是没有达到预期,那就要怀疑SHELL脚本执行是否出错了,可以查这里:
cd /var/spool/mail/root
如上图:我故意将路径写错,到点执行后报错,系统收到mail通知。
四、编辑crontab任务
[root@ultrapower mail]# crontab -e
50 15 * * * /bin/echo ‘date’ > /dev/console
五、删除crontab任务
[root@ultrapower mail]# crontab -r
[root@ultrapower mail]# crontab -l
no crontab for root
[root@ultrapower mail]#
OK,到此为止,如果哪里还不清楚,请在评论区留言,看到会回复。