在日常系统管理时经常会遇到周期性执行某任务,就会使用cron服务了; cron服务是一个不间断运行的服务,同时他还有个anacron服务,它是cron的补充,能够实现在系统由于其他原因导致过去时间该执行未执行的任务再度恢复正常。
cron分类
系统cron
/etc/crontab
分钟 小时 天 月 周 用户 执行的任务
用户cron
/var/spool/cron/username
分钟 小时 天 月 周 执行的任务
时间取值
分钟:0-59
小时:0-23
天:1-31
月:1-12
周:0-7,0,7都表示周日
时间通配表示【*】:表示对应的所有有效取值
时间表示案例
1.每小时的第三分
3 * * * * command
2.每个周日的每小时的第三分钟
3 * * * 7 command
3.每天12:13分
13 12 * * * command
4.离散时间点,用逗号民[,]隔开
每小时第10分 40分执行;每30分执行
10,40 * * * * command
每周二、五的2点10分 40分执行
10,40 02 * * 2,5 command
5.连续时间点,用[-]表示
每周一到周五的2点10分执行
10 02 * * 1-5 command
6.对应取值范围内每多久一次,用[/]表示
每三分钟一次
*/3 * * * * command
每两小时执行一次
0 */2 * * * command
每两天执行一次
0 0 */2 * * command
注意:cron服务执行命令是通过PATH环境变量去寻找的,如果用户没有登录,cron就不能通过PATH变量来执行命令,所以在cron计划中命令要使用绝对路径,脚本中要使用export PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin,同时crond定时任务不能自动加载用户目录中环境变量,即~/.bash_profile ~/.bashrc /etc/profile,如果要加载用户目录中的变量,可以在脚本开头使用 source ~/.bash_profile; source /etc/profile
用户cron管理
crontab -e 编辑任务计划 -l 查看任计划 -u username 以某个用户来管理 -r 移除任务计划
例:配置本机每隔两天在凌晨4点30备份一次/etc/目录,备份文件存放至/tmp/etc/目录,文件名形如:etc-2012-06-20.tar.bz2
[root@desktop3 ~]# crontab -l 30 04 */2 * * /bin/tar -cjf etc-`date +%Y-%m-%d`.tar.bz2 /etc/