cron是linux内置的系统服务,循环执行的例行任务,控制装个循环执行的例行任务的命令就是crontab,crontab设置格式都是六列。
一、crontab格式:
f1 f2 f3 f4 f5 program
分 时 日 月 周 程序
f1:分钟(0-60)
f2:小时 (0-23)
f3:一个月份中的第几日 (1-31)
f4:月份(1-12)
f5:一个星期中的第几天(1-7)。周日比较有趣,使用7或者0都可以,都是星期天。
f6:要运行的程序
说明:周和日不能同时并存使用,可以分别以周或者是日月为单位作为循环执行任务,但不可使用“几月几号且为星期几”,如
30 12 11 9 5 program 这个写法是不对的
#晚上11点到早上8点之间每两个小时:
0 23-7/2,8 * * * program
二、辅助的四个字符:
特殊字符 | 代表意义 |
*(星号) | 代表任何时刻都接受的意思!举例来说,f1为 * ,就代表著任何分钟都运行命令的意思 |
,(逗号) | 代表分隔时段的意思。举例来说,如果要执行的工作是 3:00 与 6:00 时,就会是: |
0 3,6 * * * command | |
时间参数还是有五栏,不过第二栏是 3,6 ,代表 3 与 6 都适用! | |
-(减号) | 代表一段时间范围内,举例来说, 8 点到 12 点之间的每小时的 20 分都进行一项工作: |
20 8-12 * * * command | |
仔细看到第二栏变成 8-12 喔!代表 8,9,10,11,12 都适用的意思! | |
/n(斜线) | 那个 n 代表数字,亦即是『每隔 n 单位间隔』的意思,例如每五分钟进行一次,则: |
*/5 * * * * command | |
用 * 与 /5 来搭配,也可以写成 0-59/5 ,意思相同 | |
f2的每个小时 * 也可以写作*/1 ,/1通常省略了 |
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,以此类推。
三、具体用法
3.1、指定用户crontab -u user 只有root用户权限给别的用户设置或删除定时任务。如果未指定用户,就是当前用户自己的定时任务。
3.2、crontab -e 编辑
a、crontab -e直接进入编辑页面,使用VI编辑器,每个任务都是独立一行,不可跨行。
b、crontab -e这个方法编辑的配置,系统会自动加载,不需要重启服务。
c、crontab 默认的编辑器是VI,如果当前用户的默认编辑器不是VI,需要设置环境变量:
#Set EDITOR
EDITOR=/usr/bin/vi
export EDITOR
d、也可以直接进到/var/spool/cron/crontabs编辑,需要重新启动CRON服务。如果没重启,还是执行老的配置文件。
方式1:/etc/init.d/crond restart
方式2:service crond restart
e、crontab -e 选项会在/tmp下创建名为crontabXXXXXX的临时文件,虽然别人没有访问权限,但还是为系统上其他用户创造了
攻击的条件。建议:
crontab -l > mycron.txt把crontab把crontab配置输出到mycron.txt文件中
vi mycron.txt 编辑mycron.txt文件
crontab < mycron.txt 执行最新的配置文件
3.3、crontab -l 查看当前用户的定时任务,如
0 2 1 * 0,4 /opt/task/DB/autodel.sh
23 05 * * * /opt/task/DB/test.sh >/tmp/task/test.log 把日志重定向输出到test.log
建议最好使用绝对路径
3.4、crontab -r 删除当前用户的所有定时任务