Debian

如何在特定時間停止腳本,直到 cron 再次啟動它?

  • January 5, 2017

我有一個執行 OSMC(基於 Debian)的樹莓派。

我設置了一個 cron 作業以在午夜啟動腳本 sync.sh。

0 0 * * * /usr/local/bin sync.sh

我需要在早上 7 點停止腳本。目前我正在使用:

0 7 * * * shutdown -r now

有沒有更好的辦法?我覺得重啟有點過頭了。

謝謝

您可以使用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

killallpsmisc

引用自:https://unix.stackexchange.com/questions/335081