Answers:
您可以使用timeout
命令运行它,
timeout - run a command with a time limit
Synopsis
timeout [OPTION] NUMBER[SUFFIX] COMMAND [ARG]...
timeout [OPTION]
Description
Start COMMAND, and kill it if still running after NUMBER seconds. SUFFIX may be 's' for seconds (the default), 'm' for minutes, 'h' for hours or 'd' for days.
PS。如果同步过程花费太多时间,则可以考虑使用另一种方法来同步数据,可能会阻止复制。
如果您在休眠17小时后可以轻松继续进行同步,请尝试
0 0 * * * killall -CONT -g sync.sh || /usr/local/bin/sync.sh
7 0 * * * killall -STOP -g sync.sh
如果您希望同步从头开始,请尝试
0 0 * * * exec /usr/local/bin/sync.sh
7 0 * * * killall -TERM -g sync.sh
如果您的同步或其子任务忽略了信号但没有留下碎片,请确保
0 0 * * * exec /usr/local/bin/sync.sh
7 0 * * * killall -KILL -g sync.sh
killall
∈ 伪
0 0 * * * timeout 7h /usr/local/bin/sync.sh
或使用与我大致相同的killall -TERM
变体。
我还将使用cron在指定的时间“停止”或“杀死”该服务或脚本。
首先创建您的cron作业以运行您的作业或脚本。(你可以很容易地运行其他的cron会杀死有一个名称的作业
sudo pkill wget
)
其次,您希望在以下输出中看到以有用和可读格式运行的crontab任务:
ps -o pid,sess,cmd afx | egrep "( |/)cron( -f)?$"
它们将出现在第一行中,如下所示:
1108 1108 cron
4288 1108 \_ CRON
4289 4289 \_ /bin/sh -c /path/to/my/crontab/script1.sh
4290 4289 \_ /bin/bash /path/to/my/crontab/script1.sh
4295 4289 \_ /usr/bin/wget LINK
第一列是PID,第二列是会话ID,第三列是cron启动的命令。您可以使用Session ID杀死与特定cron任务相关的所有进程,因此在上面的示例中,您应该杀死Session ID 4289:
pkill -s 4289
您需要将pkill放在脚本中并作为cron运行