一. 定时任务的字符表示含义
1. 五个字段分别表示分,时,日,月,周
minute---分钟 (0-59)
hour------小时(0-23)
day--------日期(1-31)
month---月份(1-12)
week----星期(0-6) //0代表星期天
hour------小时(0-23)
day--------日期(1-31)
month---月份(1-12)
week----星期(0-6) //0代表星期天
2. 特殊字符的用法
“*”:表示任意时间都可以;
“ -“:表示时间段 17-19;
“,”:表示分隔时段,17,18,19点执行命令;
"/n":每隔n个时间单位执行命令
二. 例子
1. 每隔多少个小时执行命令
0 */3 * * * gentoo /bin/echo "hello" 每3小时执行echo命令,输出hello. 注意系统cron需要指定用户身份
00 */1 * * * /application/apache/bin/apachectl graceful 每隔一小时整点重启apache
2. 每天3点30和12点30 执行脚本
30 3,12 * * * /bin/sh /scripts/oldboy.sh
3. 每隔6个小时的半点时刻执行scripts/oldboy.sh脚本
30 */6 * * * /bin/sh /scripts/oldboy.sh
4. 从上午8点到下午6点,每隔2隔小时的半点时刻执行脚本
30 8-18/2 * * * /bin/sh /scripts/oldboy.sh
5. 每周6,周日的凌晨1:10重启apache
10 1 * * 6,0 /application/apache/bin/apachect1 graceful
6. 在11 月份内,每天的早上6 点到12 点中,每隔2 小时执行一次/usr/bin/httpd.sh
0 6-12/2 * 11 * /usr/bin/httpd.sh
7. 每周六,周日上午9:00和下午14:00执行脚本 /server/scripts/hong.sh
00 09,14 * * 6,7 /bin/sh /server/scripts/hong.sh > /dev/null 2>&1
(>/dev/null 2>&1 "常用来避免shell命令或者程序等运行中有内容输出,等价于1>/dev/null 2>/dev/null,也等价 &>dev/null)
8. 每个周一到周三的早上10点执行该脚本
0 10 * * 1-3 / home/postgres/pgsql.sh 这里的0就是表示第0分,如果是1就表示第1分
9. 每隔2个小时将系统的/etc/services文件打包备份到/tmp下,最好每次备份成不同的备份包
脚本tar.sh如下
cd /etc/ tar cvzf /tmp/services_$(date +%F-%H).tar.gz ./services
测试脚本:/bin/sh /server/scripts/tar.sh (创建一个/server/scripts目录专门存放脚本)
写定时任务
00 */2 * ** /bin/sh /server/scripts/tar.sh >dev/null 2>&1 (如果第一个用*,表示每分)
检查
crontab -l | tail -2
注意:如果把命令放在定时任务里,时间的百分号一定要加转义符号 \%,定时任务不支持%
例如:0 */2 * * * /bin/tar cvzf /tmp/service-`date '+%F-%H' `.tar.gz /etc/service > /dev/null 2>&1是错误的