一、crontab 介绍
crontab命令的功能是在一定的时间间隔调度一些命令的执行。
linux任务调度的工作主要分为以下两类:
1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存。
2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置。
二、/etc/crontab 文件
在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab。尽量不要直接加在/etc/crontab里面。
每个用户都会生成一个自己的crontab 文件。这些文件在/var/spool/cron目录下,我们直接查看这个文件,里面的内容和对应用户显示的crontab -l 一致。
三、Crontab 使用说明
1、Crontab语法:
usage: crontab [-u user] file
crontab [-u user] [ -e | -l | -r ] (default operation is replace, per 1003.2)
-e (edit user's crontab):编辑用户的Crontab文件,没有就会新建
-l (list user's crontab):显示用户的Crontab文件的内容
-r (delete user's crontab):从Crontab目录中删除用户的Crontab文件
-i (prompt before deleting user's crontab):删除用户的Crontab文件前给提示
例子:
crontab -e
第一次执行会显示:no crontab for *** - using an empty one,然后就可以自己编辑了。
crontab -l
显示:30 3 * * * cd /usr/local/shell/;sh mysql_backup.sh
2、Crontab 格式说明:
用crontab -e 添加要执行的命令。
添加的命令必须以如下格式:
* * * * * /command path
前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,即命令字段,其中包括了crontab调度执行的命令。 各个字段之间用spaces和tabs分割。
前5个字段分别表示:
分钟:0-59
小时:0-23
日期:1-31
月份:1-12
星期:0-6(0表示周日)
还可以用一些特殊符号:
* : 表示任何时刻
, : 表示分割
- :表示一个段,如第二端里: 1-5,就表示1到5点
/n : 表示每个n的单位执行一次,如第二段里,*/1, 就表示每隔1个小时执行一次命令。
例子:
crontab -e
*/1 * * * * /usr/bin/curl http://www.***.cn/
表示每分钟请求一次url对应的页面。
crontab -e
01 01 * * * /usr/***/php/bin/php /opt/webroot/index.php
表示每天1点1分执行路径下的index.php页面
crontab -e
0 */2 * * * /sbin/service httpd restart 意思是每两个小时重启一次apache
crontab -e
50 7 * * * /sbin/service sshd start 意思是每天7:50开启ssh服务
crontab -e
50 22 * * * /sbin/service sshd stop 意思是每天22:50关闭ssh服务
crontab -e
0 0 1,15 * * fsck /home 每月1号和15号检查/home 磁盘
crontab -e
1 * * * * /home/bruce/backup 每小时的第一分执行 /home/bruce/backup这个文件
crontab -e
00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \; 每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。
crontab -e
30 6 */10 * * ls 意思是每月的1、11、21、31日是的6:30执行一次ls命令