crontab命令


 

crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。
 
开启crond服务:
 
# service crond start/stop/status
 
开机自启动crond:
 
# chkconfig --add crond
# chkconfig --level 35 crond on

格式:分、时、日、月、周
 

追加周期任务:crontab  -e
 
覆盖原有的周期任务:crontab
 
查看周期任务:crontab -l
 
删除周期任务:crontab -r
 
以某用户的身份来控制cron表:crontab -u 用户名
 
退出任务:ctrl + d
 
 

用户的计划任务建立后是存放在/var/spool/cron这个目录


 crond使用技巧:
 
先建一个.sh脚本,再用crond执行脚本即可
 
示例:
 
1、周期性备份
 
# vi /root/tar.sh
 
#!/bin/sh
 
Date=`date +%y%m%d`
echo "usr back begin at `date +%H:%M:%S`" >> /logs/$Date/back.log
tar czf /root/`date +%y%d%m%H%M%S`.tar.gz /usr
 echo "usr back end at `date +%H:%M:%S`" >> /logs/$Date/back.log
:wq
 
注:对目录usr进行tar备份,并记录开始备份和结束备份的时间
 
# chmod +x tar.sh
# crontab -e
30 17 * * * /bin/sh /root/tar.sh
 
2、周期性scp传输文件
 
#  vi /root/scp.sh
 
#!/bin/sh
 
Date=`date +%y%m%d`
echo "scp begin at `date +%H:%M:%S`" >> /logs/$Date/back.log
scp -p /root/*.gz root@192.168.1.10:/root
echo "scp end at `date +%H:%M:%S`" >> /logs/$Date/back.log
 
:wq
 
注:把/root下的所有以.gz结尾的文件scp(远程传输)到192.168.1.10的/root下,并记录scp开始和结束的时间
 
# chmod +x /root/scp.sh
# crontab -e
00 18 * * * /bin/sh root/scp.sh
 

其它示例:

每月每天每小时的第 0 分钟执行一次 /bin/ls :
  
0 * * * * /bin/ls   
 
在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次 /usr/bin/backup :  
 
*/20 6-11 * 12 * /usr/bin/backup
  
周一到周五每天下午 5:00 寄一封信给 alex_mail_name :  
 
0 17 * * 1-5 mail -s "hi" alex_mail_name < /tmp/maildata
  
每月每天的0点20分,2点20分,4点20分....执行 echo "haha"  
 
20 0-23/2 * * * echo "haha"