Crontab学习笔记——Linux计划任务
简介
Crontab是一个用于设置周期性被执行的任务的工具。
主要由CronD这个系统服务、配置文件和crontab配置工具组成,会每分钟从配置文件刷新定时任务。
安装配置
本服务器为Centos 64位系统,已经缺省安装。
安装前先检查:
crontab -l #是否有计划任务列表
service crond status #是否启动服务
安装:
sudo yum install vixie-cron
sudo yum install crontabs
工具使用
启动 :
crond start #启动
crond stop #停止
crond restart #重启
crond reload #重新加载配置
使用 :
crontab -help #查看帮助
crontab -l #该用户是否有计划任务列表
#操作的是/var/spool/cron/username这个文件
crontab -e #编辑当前用户的计划任务列表
useradd crontester
crontab -e -u crontester #编辑crontester的计划任务列表
crontab -l -u crontester #crontester是否有计划任务列表
配置文件
Path:/etc/crontab
ls cron*
crontab filename #会覆盖同名的配置文件
注意: crontab 对系统级配置文件无效
格式
* * * * * [username] opration
说明:
第一个*:分钟 0~59
第二个*:小时 0~23
第三个*:日期 1~31
第四个*:月份 1~12
第五个*:星期 0~7(0、7都为星期天)
当有多个值时,用','区分,或者为连值时用'-'连接。
示例:
#每个月10,20,30日的0点重启apache
0 0 10,20,30 * * service httpd restart
#每个月10-15日的22:31点重启apache
31 22 10-15 * * service httpd restart
#每隔两分钟重启apache
*/2 * * * * service httpd restart
#当分钟为奇数时,每隔两分钟重启apache
1-59/2 * * * * service httpd restart
日志
查看:
tail -f /var/log/cron #计划任务日志文件,-f 实时刷新
cat /var/spool/mail/root #crontab每次执行计划都会发邮件给用户
#两个方法都可以
注意
1.环境变量:环境变量在计划中无法是载入的。
2.第三个域(日期)和第五个域(星期)是或的关系。
#四月的第一个星期日早晨1时59分运行a.sh
59 1 1-7 4 * test `date +\%w` -eq 0 && ./a.sh
案例
#半分钟执行一次,将任务细化到秒
*/1 * * * * echo "***"
*/1 * * * * sleep 30s;echo "***"
总结
学习了Crontab,就可以更好的使你的服务器自动化啦。
反馈与建议
- 微博:@AnSwEr不是答案
- github:AnSwErYWJ
- 博客:AnSwEr不是答案的专栏