Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Linux中,将任务计划为小时、分钟、秒精度_Linux_Task_Schedule_Seconds - Fatal编程技术网

在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

我只想在“16:22:36”这个准确时间运行一个shell脚本。像“at”这样的实用程序是无用的,因为它们没有“秒”。“睡眠”不起作用,因为循环提前了8个小时结束,原因是:s,我在谷歌上搜索过,找不到任何工具。所以像Linux这样的大型操作系统没有合适的任务调度器?

Linux有一个很棒的任务调度器,叫做
crontab
。网上有大量关于它的信息。简单地说,“这就是它的功能和使用方法:-应该让您开始。

您可以创建一个
crontab
条目,以36秒的睡眠时间记录小时和分钟

22 16 * * * sleep 36; shell_script.sh

标准的
cron
缺少第二精度调度,因为

  • Unix服务器管理传统上很少需要一秒钟的精度
  • 对于像“每秒运行此任务”这样的多用户系统,它可能会以令人不安的方式使用
  • 然而,借助GNUCoreutils套件中的
    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