在Linux上,通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。
格式如下
* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)
前五个时间设定段,可以含如下特殊字符:
1、星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作;
2、逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”;
3、中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”;
4、正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
举个例子,编写一个定时任务脚本,每隔1分钟把时间写入到指定文件中
vi writedate.sh
#! /lib/bin
touch /opt/m/date.text
date >> /opt/m/date.text
给脚本赋予可执行权限
添加任务,编辑当前用户的任务列表
crontab -e
任务列表内容
*/1 * * * * sh /opt/m/writedate.sh
查看当前定时任务
crontab -l
重启crontab,配置生效
systemctl restart crond.service
查看任务的历史
tail -f /var/log/cron
清除任务
crontab -r
定时任务脚本执行如下