Linux crontab命令详解
crontab:定时任务的守护进程,精确到分,设计秒的我们一般写脚本 –>相当于闹钟
1 | 日志文件: ll /var/log/cron* |
常见命令参数
1 | usage: crontab [-u user] file |
定时任务分类
Linux下的任务调度分为两类,系统任务调度和用户任务调度。
系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。
在/etc/crontab文件,这个就是系统任务调度的配置文件。
用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。
用户可以使用 crontab 工具来定制自己的计划任务。
在crontab 文件都被保存在/var/spool/cron目录中。其文件名与用户名一致
1 | 1.系统定时任务:例如清理系统日志,清理系统缓存 -->不过多的关注 |
crontab文件内容分析
cat /etc/crontab
前四行是用来配置crond任务运行的环境变量
第一行SHELL变量指定了系统要使用哪个shell,这里是bash
第二行PATH变量指定了系统执行命令的路径
第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户
如果MAILTO变量的值为空,则表示不发送任务执行信息给用户
第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。
星号(*):代表所有可能的值,如month字段为星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。
小 结:
数字的表示最好用2为阿拉伯数字显示
周和日最好不要同时用
定时任务要加注解
可以定向到日志文件或者空文件
定时任务一定是绝对路径,且目录必须存在才能出结果
crontab 服务一定要开启运行
crontab日志路径
1 |
|
1 | less /var/spool/mail/root |
常用的命令展示
安装crontab:
1 | yum install crontabs |
crontab服务操作说明:
1 | /sbin/service crond start //启动服务 |
查看crontab服务状态:
1 | service crond status |
手动启动crontab服务:
1 | service crond status |
查看crontab服务是否已设置为开机启动,执行命令:
1 | 方法一: 界面启动 ntsysv |
crontab -l查看定时任务列表
编辑定时任务
1 | crontab –e |
每隔2分钟输出时间到文件
1 | */2 * * * * echo `date` >> $HOME>test.txt |
crontab -r 删除定时任务
1 | ==> 从/var/spool/cron目录中删除用户的crontab文件 |
备份crontab文件
1 | crontab -l > $HOME``/mycron` |
恢复丢失的crontab文件
1 | 如果不小心误删了crontab文件,假设你在自己的$ H O M E目录下还有一个备份,那么可以将其拷贝到/var/spool/cron/<username>,其中<username>是用户名。如果由于权限问题无法完成拷贝,可以用:`</div><div class="line number2 index1 alt1">`crontab <filename> 其中,<filename>是你在$ H O M E目录中副本的文件名。 |
每小时执行/etc/cron.hourly目录内的脚本
1 | 0 * * * * root run-parts /etc/cron.hourly |
每隔2分钟同步一次互联网时间
1 | echo "*/2 * * * * /usr/bin/ntpstat time.windows.com >/dev/null 2>&1" >> /var/spool/cron/root |
每天3-5,17-20每隔30分钟执行一次脚本
1 | echo "*/30 [3-5],[17-20] * * * /bin/sh /home/omc/h.sh >/dev/null 2>&1" >> /var/spool/cron/root |
当天23点,第二天0点到凌晨7点 每隔1分钟执行一次脚本
1 | * 23,00-07/1 * * * /bin/sh /home/omc.h.sh |
每年的4月份每周的周一到周三的11点执行脚本
1 | 00 11 * 4 1-3 /bin/sh /home/omc/h.sh |
crontab的注意事项
- 注意环境变量问题
在crontab文件中定义多个调度任务时,需要特别注意的一个问题就是环境变量的设置
1 | # 脚本中涉及文件路径时写全局路径; |
- 系统级任务调度与用户级任务调度
1 | root用户的任务调度操作可以通过“crontab –uroot –e”来设置,也可以将调度任务直接写入/etc/crontab文件,需要注意的是,如果要定义一个定时重启系统的任务,就必须将任务放到/etc/crontab文件,即使在root用户下创建一个定时重启系统的任务也是无效的。` |
3.其他注意事项
1 | 当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行/报错tail -f /var/log/cron。 |
- 生产调试定时任务
1 | 1.增加执行任务的频率调试 |
5.crontab箴言
1 | 1.环境变量问题,例如crontab不能识别Java的环境变量 |
作者:小a玖拾柒
出处:http://www.cnblogs.com/ftl1012/
-------------------------------------------
个性签名: 所有的事情到最後都是好的,如果不好,那說明事情還沒有到最後~
本文版权归作者【小a玖拾柒】和【博客园】共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利!