我只想在确切的时间“16:22:36”运行shell脚本。像“at”这样的实用程序没用,因为它们没有“秒”。 “睡眠”不起作用,因为循环提前8小时由于某种原因结束:s,我搜索了整个谷歌,找不到任何工具。那么像Linux这样庞大的Os没有合适的任务调度程序?
答案 0 :(得分:7)
标准cron
缺少第二次精确计划,因为
然而,在GNU Coreutils套件的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
(等一会儿......)
$ 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
从第1版开始,14 12
中的crontab
并不能保证12:14:00
敏锐。第二个版本使用while
循环和亚秒sleep(1)
来实现亚秒精度。
请注意,除非您使用NTP将计算机时钟与时间服务器同步,否则谈论第二次精确作业调度毫无意义。
答案 1 :(得分:4)
你可以创建一个小时和分钟的crontab
条目,睡眠时间为36秒
22 16 * * * sleep 36; shell_script.sh
答案 2 :(得分:0)
Linux有一个很棒的任务调度程序,名为crontab
。网上有大量有关它的信息。虽然简单地说“这就是它的作用以及如何使用它”:http://kvz.io/blog/2007/07/29/schedule-tasks-on-linux-using-crontab/ - 应该让你开始。