[Linux]-Crontab定时任务
森格 | 2022年12月
本文是对Linux中的定时任务Crontab的介绍
一、Crontab是什么
crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρνο),原意是时间。通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。
二、Crontab基本操作
2.1 检查crontab是否安装
crontab -l
若没有安装:
centOS:yum -y install vixie-cron crontabs
Ubuntu:apt-get install cron
2.2 查看crontab文件内容
cat /etc/crontab
- minute:表示分钟,可以是从0到59之间的任何整数。
- hour:表示小时,可以是从0到23之间的任何整数。
- day:表示日期,可以是从1到31之间的任何整数。
- month:表示月份,可以是从1到12之间的任何整数。
- week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
- command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
- 星号(*):代表所有可能的值,满足其他条件即可。
- 逗号(,):用逗号隔开的值指定一个列表范围。
- 中杠( - ):表示一个整数范围。
- 正斜线(/):指定时间的间隔频率。
2.3 crontab服务命令
crontab一定要开启服务
-
service crond start //启动服务
-
service crond stop //关闭服务
-
service crond restart //重启服务
-
service crond reload //重新载入配置
-
service crond status //查看crontab服务状态
2.4 常见命令参数
cron [ -u user ] [ -e | -l | -r ]
-e:编辑用户的任务
-l:列出用户的任务
-r:删除用户的任务
2.5 crontab日志路径
/var/log/cron 会记录是否执行了某些计划的脚本,可以用tail命令查看,tail -f /var/log/cron
三、样例介绍
3.1 注意事项
当手动执行脚本OK,crontab出错时,尝试在crontab中直接引入~/.bash_profile环境变量或者在shell脚本中引入环境变量source ~/.bash_profile。
3.2 格式示例
格式 | 解释 |
---|---|
*/1 * * * * service httpd restart | 每一分钟 重启httpd服务 |
0 */1 * * * service httpd restart | 每一小时 重启httpd服务 |
30 21 * * * service httpd restart | 每天 21:30 分 重启httpd服务 |
26 4 1,5,23,28 * * service httpd restart | 每月的1号,5号 23 号 28 号 的4点26分,重启httpd服务 |
26 4 1-21 * * service httpd restart | 每月的1号到21号 的4点26分,重启httpd服务 |
1-59/2 * * * * service httpd restart | 每隔两分钟 执行,奇数 重启httpd服务 |
0 23-7/1 * * * service httpd restart | 每天的晚上11点到早上7点 每隔一个小时 重启httpd服务 |
0,30 18-23 * * * service httpd restart | 每天18点到23点 每隔30分钟 重启httpd服务 |
0-59/30 18-23 * * * service httpd restart | 每天18点到23点 每隔30分钟 重启httpd服务 |
59 1 1-7 4 * test ‘date +%w’ -eq 0 && /root/a.sh | 四月的第一个星期日 01:59 分运行脚本 /root/a.sh ,命令中的 test是判断,%w是数字的星期几 |
四、总结
可以设想,万一开发人员让你在业务低峰期在数据库建表,那你难道要半夜从床上爬起来嘛?我们可以利用一些Shell脚本通过Linux的定时器Crontab去定时执行,这不就大大简化了人工操作,何乐而不为。
🍒如果您觉得博主的文章还不错或者有帮助的话,期待您的关注,如果三连点赞评论收藏就更好啦!谢谢各位大佬给予的支持!