linux定时任务crontab
一、 crontab的解释
crontab定义的是一个周期性的任务,如每月12号执行。crontab命令允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个crontab文件来保存调度信息。系统管理员可以通过/etc/cron.deny 和 /etc/cron.allow 这两个文件来禁止或允许
二、crontab常用命令:
1、 crontab -e:编辑当前用户的定时任务列表;
2、 crontab -l:查看当前用户的定时任务列表;
3、 crontab -r:删除当前用户的所有定时任务;
4、 crontab -u username -e:编辑指定用户(username)的定时任务列表;
5、 crontab -u username -l:查看指定用户(username)的定时任务列表;
6、crontab -u username -r:删除指定用户(username)的所有定时任务。
在编辑定时任务之后,需要保存并退出文件才能生效。每行代表一个定时任务,格式为分、小时、日期、月份、星期几 command。其中,*号表示该字段不限制取值范围,-号表示连续多个数值,/号表示间隔执行等。
三、检查是否安装crontab,下图表示已经安装了
若未安装,可以使用yum进行安装
yum install crontabs
配置定时任务
vi /etc/crontab
四、crontab服务操作说明
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status//查看crontab服务状态
五、crontab文件格式
* * * * * command
minute hour day month week command
分 时 天 月 星期 命令
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
特殊字符说明:
星号(*):代表每的意思,例如month字段如果是星号,则表示每月都执行该命令操作。
逗号(,):表示分隔时段的意思,例如,“1,3,5,7,9”。
中杠(-):表示一个时间范围,例如“2-6”表示“2,3,4,5,6”。
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
六、实例
1、每隔2分钟输出当前时间到文件
*/2 * * * * echo $(date) >> /test/date.log
2、每周六、周日的1:10重启smb
10 1 * * 6,0 /etc/init.d/smb restart
3、每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。
00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \;
七、使用注意事项
1:定时任务要加注释
2:定时任务命令或脚本结尾加 &>/dev/null 或 >/dev/null 2>&1 或 1>/dev/null 2>/dev/null
例如:0 */3 * * *
/usr/local/apache2/apachectl restart >/dev/null 2>&1
3:定时任务执行shell脚本前加/bin/sh,定时任务执行shell脚本不必添加执行权限
4:定时任务命令或程序尽量写到脚本里,定时任务只要执行脚本即可
注意操作步骤:
(1)、命令行执行
(2)、编写脚本
(3)、测试脚本
(4)、设置定时任务
5:生产任务程序不要随意打印输出信息
6:定时任务执行的脚本要规范路径 (例如 /server/script)
7:配置定时任务要规范操作过程
8:定时任务执行特殊的字符需要进行转义,否则会报错,例如 百分号% 转义 \%
9:定时任务脚本中如果涉及使用到环境变量,必须在脚本中重新定义,不然,定时任务识别不了