1. crontab简介
Linux计划任务有两个常用工具:at与crontab。at用于一次性执行,crontab表示循环执行,一般来说,有crontab就不需要使用at,而且绝大多数的Linux发行版都默认自带crontab,不一定自带at,比如CentOS最小化安装,at是没有集成在内的,需要管理员人工安装。
2: 启动crontab
crontab程序依赖crond服务,先启动服务。一般来说,crontab是系统自带并且已经设置好开机启动的状态了。
2.1 CentOS 6:
[root@zcwyou ~]# service crond start
2.2 CentOS 7:
[root@zcwyou ~]# systemctl start crond
3.当前用户建立计划任务:
命令:
[root@zcwyou ~]# crontab -e
自动进入vi模式,由操作者写入计划任务
语法:
* * * * * command
比如,每天凌晨2点执行一次脚本文件:/root/zcwyou.sh
* 2 * * * /root/zcwyou.sh
退出vi
:wq
第一个星号表示分钟,范围:0-59
第二个星号表示小时,范围0-23
第三个星号表示日,范围1-31
第四个星号表示月,范围1-12
第五个星号表示一周中的星期几,范围0-6,0表示周日
第六个星号表示要执行的任务或者命令。由于crond的中PATH变量与shell中的变量不一致,所以指定命令时,路径必须为绝对路径。否则,很有可能因找不到路径而执行失败。
*
本身表示匹配任意数字,每个星号字段内容里,还可以再细分,用3个符号表示:
- 英文符号/表示每隔多长时间,例如每隔4分钟执行一次id命令:
*/4 * * * * /usr/bin/id
- 英文符号,表示时间点A和时间点B,例如每小时的第20分钟和40分钟分别执行一次id命令:
20,40 * * * * /usr/bin/id
- 英文符号-表示时间点A到时间点B,例如每周2到周4凌晨3点执行一次id命令:
3 * * * 2-4 /usr/bin/id
crond的PATH变量:
[root@zcwyou ~]# head -3 /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
SHELL中的PATH变量:
[root@zcwyou ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
两个变量并不一样,所以命令路径必须为绝对路径。
计划任务保存在/var/spool/cron,文件名为用户名
[root@zcwyou ~]# ll /var/spool/cron/
总用量 4
-rw-------. 1 root root 28 10月 10 11:56 root
4. 系统管理员为其他用户ocr指定任务
[root@zcwyou ~]# crontab -e -u ocr
5. 查看定时任务:crontab -l
[root@zcwyou ~]# crontab -l
* * */1 * * /root/zcwyou.sh
6.删除定时任务:
[root@zcwyou ~]# crontab -r
7.限制用户使用crontab,一个用户占一行。
允许用户列表:
/etc/cron.allow
禁止用户列表:
/etc/cron.deny
默认情况下,allow列表文件是不存在的,deny列表文件是存在但内容为空。
如果allow列表文件存在,则表示,只有在列表中的用户才能使用crontab。
评论前必须登录!
注册