在Linux中,将任务计划为小时、分钟、秒精度
我只想在“16:22:36”这个准确时间运行一个shell脚本。像“at”这样的实用程序是无用的,因为它们没有“秒”。“睡眠”不起作用,因为循环提前了8个小时结束,原因是:s,我在谷歌上搜索过,找不到任何工具。所以像Linux这样的大型操作系统没有合适的任务调度器?Linux有一个很棒的任务调度器,叫做在Linux中,将任务计划为小时、分钟、秒精度,linux,task,schedule,seconds,Linux,Task,Schedule,Seconds,我只想在“16:22:36”这个准确时间运行一个shell脚本。像“at”这样的实用程序是无用的,因为它们没有“秒”。“睡眠”不起作用,因为循环提前了8个小时结束,原因是:s,我在谷歌上搜索过,找不到任何工具。所以像Linux这样的大型操作系统没有合适的任务调度器?Linux有一个很棒的任务调度器,叫做crontab。网上有大量关于它的信息。简单地说,“这就是它的功能和使用方法:-应该让您开始。您可以创建一个crontab条目,以36秒的睡眠时间记录小时和分钟 22 16 * * * sleep
crontab
。网上有大量关于它的信息。简单地说,“这就是它的功能和使用方法:-应该让您开始。您可以创建一个crontab
条目,以36秒的睡眠时间记录小时和分钟
22 16 * * * sleep 36; shell_script.sh
标准的
cron
缺少第二精度调度,因为
sleep(1)
,您可以实现真正的二次精度作业调度
示例:等待12:14:05和12:14:10
$ crontab -l
(snip...)
14 12 * * * sleep 5; date > /tmp/plain.txt
14 12 * * * while [ "1410" -gt "$(date +\%M\%S)" ]; do /bin/sleep 0.1; done; date > /tmp/while.txt
(等一会儿……)
正如您从第1个版本中看到的,crontab
中的14 12
不保证12:14:00
sharp。第二个版本使用while
循环和亚秒睡眠(1)
实现亚秒精度
请注意,除非您使用NTP将您的机器时钟与时间服务器同步,否则谈论二次精度作业调度是毫无意义的。除了cron中的最小时间范围是1分钟……是允许的,但正如@Vimsha指出的,有一些方法可以解决这一问题。这仍然是imho的最佳选择。对,但我只是想指出一点,因为您链接的文章中没有提到睡眠。因为每个用户都有自己的
crontab
文件,sudo
不是必需的,除非您想使用root权限运行命令本身。那么Linux真的没有内置秒数的任务调度器吗?为什么?怎样?我是说。。。!!!您假设22 16
将在16:22:00准时运行,但不幸的是,它不一定会运行。
$ ls -l --time-style=full-iso /tmp/*.txt
-rw-r--r-- 1 nodakai nodakai 43 2014-02-22 12:14:06.236151567 +0800 /tmp/plain.txt
-rw-r--r-- 1 nodakai nodakai 43 2014-02-22 12:14:10.007600677 +0800 /tmp/while.txt