OSMC(Debianベース)を実行しているRaspberry Piを持っています。
午前0時にスクリプトsync.shを開始するようにcronジョブを設定しました。
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
また、cronを使用して、指定した時間にサービスまたはスクリプトを「停止」または「強制終了」します。
最初にcronジョブを作成して、ジョブまたはスクリプトを実行します。 (Sudo pkill wget
という名前のジョブを強制終了する別のcronを簡単に実行できます)
次に、実行中の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、2番目はセッションID、3番目はcronによって開始されるコマンドです。セッションIDを使用して、特定のcronタスクに関連するすべてのプロセスを強制終了できるため、上記の例では、セッションID 4289を強制終了する必要があります。
pkill -s 4289
スクリプトにpkillを入れ、これをcronとして実行する必要があります