Debian
如何在特定時間停止腳本,直到 cron 再次啟動它?
我有一個執行 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
killall
∈ psmisc