Linux: cron定时脚本
例如ubuntu打开:/etc/crontab,有注释说明
例如上面的 划线的指令就是刚刚根据上方的注释编写定时执行脚本。因为是云服务器,所以user-name 为root,.sh是脚本文件,记得脚本文件需要绝对路径。
概念:
cron是unix系统下自带的一个工具,伴随着系统的启动并是个守护进程。
什么是unix系统?
常用的linux、macos都属于unix系统
cron作用:
- 在特定的时间点执行特定的shell指令。
cron的写法:【cron表达式】+' ' + 【执行的shell脚本】
其中cron表达式默认有5段:少数的扩展版本中是6段。
还有7段即:
最基础的5段可以满足绝大部分场景了。
使用举例:
现在是
意思就是在等会儿的30分会执行命令,且只执行1次,因为时间点过去了嘛。
不想执行一次?涉及cron的特殊符号:
- * 代表 “每一”
意思就是一星期的每一天每一月的每一小时的每一分钟都去执行一次,即每分钟不断执行。
如果将
即代表每小时的第20分钟才执行,比如14:20、15:20等,一天就会执行24次。
- , 代表 '"并列"
在每小时的第20分钟和第40分钟分别执行一次程序。这样每小时就会执行2次,每天就会执行48次。
- - 代表 "连续"
第20分钟到第40分钟每分钟都会执行1次,【20,40】,每小时执行21次【闭区间】,所以每天执行21*24次
- / 代表“整除”
代表当前分钟数能被2整除的话就执行,等价于0,2,4,6,,,,,,,58
注意事项:根据系统的不同,
星期可能有2种情况:
- 0 ----6
- 1 ----7
所以最好写星期的简写,比如星期一写MON
还可以用W来指定工作日【周1到5】
日、星期上都可以指定L【月的最后一天】
月也是:
- 0-----11
- 1-------12
所以写简称7月为JUL
*/2
0/2
1/2
的区别:
*/2完全等价于0/2
1/2则是1,3,5,....59
命令总结:
- crontab -l : 列出当前的crontab配置
- crontab -e : 进行配置
如果默认只有5段,如何模拟每秒执行:
当执行前一个5的时候,会每分钟1次,然后立即执行了第2行的5,休眠了1s然后继续,从而模拟了每秒执行。