Crontab秒级执行命令

crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语chronos(χρόνος),原意是时间。在linux同样也有这个命令,它相当于windows的计划任务。
crontab每秒执行,crontab以秒执行,cron running every second,cron running every second
crontab
我们在linux中可以使用 crontab -e 命令编辑 crontab 的配置文件设定任务。如图,其格式为:“m h dom mon dow command ”。我们看到这个格式中的最小颗粒是分钟,而不是second。我们无法在crontab配置中直接将命令精确到秒,但是可以在command中设定sleep时间来跳过几秒,从而达到按秒执行的目的。如

*/1 * * * * sh /root/cron.sh
*/1 * * * * sleep 30 && sh /root/cron.sh
# 每分钟执行两次 每隔30秒执行一次

扩展阅读:

Shell && 和 ||
shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 $? 中。当 $? == 0 时,表示执行成功;当 $? == 1 时,表示执行失败。
有时候,下一条命令依赖前一条命令是否执行成功。如:在成功地执行一条命令之后再执行另一条命令,或者在一条命令执行失败后再执行另一条命令等。shell 提供了 && 和 || 来实现命令执行控制的功能,shell 将根据 && 或 || 前面命令的返回值来控制其后面命令的执行。

&&(命令执行控制)
语法格式如下:
command1 && command2 [&& command3 …]
1 命令之间使用 && 连接,实现逻辑与的功能。
2 只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。
3 只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。

||(命令执行控制)
语法格式如下:
command1 || command2 [|| command3 …]
1 命令之间使用 || 连接,实现逻辑或的功能。
2 只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才会被执行。这和 c 语言中的逻辑或语法功能相同,即实现短路逻辑或操作。
3 只要有一个命令返回真(命令返回值 $? == 0),后面的命令就不会被执行。

shell 提供了两种方法(() 和 {})实现将几个命令合作一起执行,代替独立执行。这种方式并不能控制命令是否需要执行,仅是将多个单独的命令组合在一起执行,最终命令的返回值将由最后一条命令的返回值来决定。

() (命令组合)
语法格式如下:
(command1;command2[;command3…])
1 一条命令需要独占一个物理行,如果需要将多条命令放在同一行,命令之间使用命令分隔符(;)分隔。执行的效果等同于多个独立的命令单独执行的效果。
2 () 表示在当前 shell 中将多个命令作为一个整体执行。需要注意的是,使用 () 括起来的命令在执行前面都不会切换当前工作目录,也就是说命令组合都是在当前工作目录下被执行的,尽管命令中有切换目录的命令。
3 命令组合常和命令执行控制结合起来使用。

附:常用时间设定

0 * * * * command
# 每月每天每小时的第 0 分钟执行一次 command
0,20,40 * * * * command
# 每月每天每小时的第 0,20,40分钟执行一次 command
*/1 * * * * command
# 每隔1分钟执行一次 command
*/5 * * * * command
# 每隔5分钟执行一次 command
*5 * * * * command
# 每月每天每小时的第 5,15,25,35,45,55分钟执行一次 command
*/20 6-11 * 12 * command
# 在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次 command

《Crontab秒级执行命令》上有31条评论

回复 神爱 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注