Crontab 是一个用于设置周期性被执行任务的工具
被周期性执行的任务是Cron job
被周期性执行的任务列表是Cron table
putty:一个免费易用的SSH链接工具
检查cron 服务
- 检查Crontab 工具是否安装: crowtab -l
- 检查crond 服务是否启动:service crond status
安装cron
- yum install vixie-cron
- yum install crontabs
一个简单的例子
1crontab -e2* /1 * * * * data >> /tmp/log.txt3 crontab -l4
5tail -f /tmp/log.txt
Crontab 的基本格式:
系统服务:Crond 配置工具crontab
每分钟都会以配置文件刷新定时任务
Crontab 的配置文件格式:
***** COMMAND
- 第一个* 代表的是分钟 (0~59)
- 第二个*代表的是小时(0~23)
- 第三个*代表的是日期(0~31)
- 第四个*代表的是月份(0~12)
- 第五个*代表的是星期(0~7 | 0, 7 都是代表星期天)
每晚21:30 重启 apache
30 21 * * * service httpd restart
每月1, 10, 22日的 4:45 重启apache
45 4 1,10,22 * * service httpd restart
每月1-10日的4:45重启apache
45 4 1-10 * * service httpd restart
每隔两分钟重启apache
1* /2 * *** service httpd restart21-59/2 * * * * service httpd restart
晚上11点到早上七点, 每隔1小时重启apache
0 23-7/1 * * * service httpd restart
每天18:00到23:00之间每隔30分钟重启apache
0,30 18-23 * * * service httpd restart
0-59/30 18-23 * * * service httpd restart
*/A
表示每A分钟,A-B
表示A到B 之前,*
表示任何时候,A,B,C 表示A,B,C时
Crotnab 工具的使用:
1crontab --help2crontab -l3crontab -e4
51-59/2 * * * * echo "JISHU*****"6
7useradd crontester8crontab -e -u90-58/2 * * * * echo "JISHU*****"10
11crontab -l -u crontester12tail -f /var/log/corn
Crontab配置文件
全局(系统)配置文件
-/etc/crontab/
注意格式
1cd /etc/2ls cron*3vi crontab # 修改后:wq4tail -f /var/log/corn5
6cd corn.d7ls8cat sysstat9crontab sysstat10crontab -l11
12vi crontst13*/1 * * * * crontab echo “File in /etc/crond/crontst”14crontab -l -u crontester15
4 collapsed lines
16crontab -l17cat /var/spool/cron/root 目录所在位置18
19tail -f /var/log/cron
Crontab 常见错误
坏境变量
1cd2ls -a3vi .bash_profile4source .bash_profile # (改变后在crontab中并不能用)
命令行中双引号中未加入反斜扛
第三和第五个域之间的执行的是“或”操作
59 1 1-7 4 0 /root/a.sh (错误)
四月的第一个星期日早晨1时59分运行a.sh
59 1 1-7 4 *testdate+\%w
-eq 0 && /root/a.sh (正确)
data +%w
test date +%w
-eq 0
echo $? (1表示失败, 0表示成功)
test 1=1
test 1=0
分钟设置误用
1* 0,2,4...22 * * * date # (X)20 */2 * * * date # (√)3# 每两分钟运行一次
综合案例:
半分钟执行命令:
date;sleep 0.5s;date