【问题标题】:How to to postpone the cron execution for next few hours如何将 cron 执行推迟几个小时
【发布时间】:2014-06-11 16:28:26
【问题描述】:

我必须每天重新启动我的系统,为此我创建了一个脚本文件。在该脚本文件中,我添加了条件,如果正在下载或上传,则跳过重新启动。

这是我的脚本文件

#!/bin/bash

if [ "$Upload" ]; then
    echo itsme | sudo -S shutdown -r now
fi

为了执行这个脚本文件,我编写了一个 cron 作业

0 12 * * * ${HOME}/reboot-me.sh

现在我必须在下载或上传过程中添加功能,然后将重启推迟 1 小时或添加 1 小时延迟。

那么我该如何推迟这份工作呢?

编辑 我已经编辑了我的条件是这个工作吗?

if [ "$Upload" ]; then
        echo itsme | sudo -S shutdown -r now
else
        sleep 3600
        if [ "$Upload" ]; then
           echo itsme | sudo -S shutdown -r now
        else
           echo "uploading....."
        fi
fi

【问题讨论】:

  • sleep 3600 怎么样?
  • 一个快速的问题,如果我在脚本中添加 sleep 3600,我每天执行一次脚本,我是否必须再次运行该脚本,否则它将在 1 小时后继续运行。
  • 它应该在 1 小时后继续。请注意,sleep 就像一个“暂停”,一旦时间结束,它就会恢复执行。
  • @fedorqui 我已经编辑了我的条件是这个工作吗?
  • 是的,它应该可以工作。请注意,这将推迟一次然后重新启动;如果它在一小时后再次上传,它不会重新启动。如果您真的想在上传后重新启动,任何时候,您都可以考虑使用带有条件的while true; do ... done

标签: ubuntu cron crontab cron-task


【解决方案1】:

让您的 cronjob 每小时运行一次并检查是否需要重新启动:

  • 12 点过去了?
  • 今天已经重启了吗?
  • 正在运行的东西应该推迟重新启动?

通过这3点你应该可以决定是否可以重启机器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    • 2020-12-03
    相关资源
    最近更新 更多