「Cron」- 使用技巧 @20210308

在Cron中无法实现每秒执行任务,但可以通过systemdTimer或者ShellScript来达到目的。systemdTimer能以秒为单位执行任务。而ShellScript则可以创建循环,通过sleep命令每秒执行一次任务。另一种方法是预先安排多个任务,每隔几秒执行一次,以模拟每秒执行。需要注意的是,这种方法可能导致后期任务的执行时延增大。

如何每秒执行任务?

没有直接的解决方案。因为在Cron中,最小的时间帧是分钟,不能进行每秒钟执行某个任务。

# 方案一:systemd Timer

可以使用systemd Timer,它支持以秒为时间帧来执行任务。

# 方案二:Shell Script

在Cron中,最小的时间帧是分钟。因此可以写一个Shell脚本:在循环中,休眠一秒钟,创建一个后台任务,共计60秒。

创建后台任务是为了不让任务的执行循环执行,否则极可能出现脚本执行时间超过60秒的情况。

# 方案三:Shell Script

与「方案二」类似,创建一个脚本。不同的是脚本的写法:

(sleep  5 && /path/to/task) &
(sleep 10 && /path/to/task) &
(sleep 15 && /path/to/task) &
(sleep 20 && /path/to/task) &
(sleep 25 && /path/to/task) &
(sleep 30 && /path/to/task) &
(sleep 35 && /path/to/task) &
(sleep 40 && /path/to/task) &
(sleep 45 && /path/to/task) &
(sleep 50 && /path/to/task) &
(sleep 55 && /path/to/task) &
(sleep 60 && /path/to/task) &

上面的示例是每隔五秒中执行,要不要使用这个方案,需要根据自己的需求把握。

「方案二」和「方案三」存在相同的问题:任务越靠后,时延越大,因为即使是放入后台运行也需要消耗时间。

相关文章

「crontab」- 周期任务的配置文件
「Cron」- 安装及注意事项

参考文献

Seting cron to run a script every second
How to run scripts every 5 seconds?
systemd as a replacement for cron every 10 seconds
Run timer exactly every second with systemd
systemd.timer — Timer unit configuration

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值