web-dev-qa-db-ja.com

特定のスクリプトを実行する時間間隔を指定します

私はこのbashスクリプトを持っています:

while [[ 1 ]] ; do sleep 3600 ; ./notify.sh --text "ricordati di bere" && play /mnt/musica/login.wav && zenity --info --text="<span size=\"xx-large\">Time is $(date +%Hh%M).</span>\n\nricordati di <b>bere</b>." --title="drink time" ; done  

このスクリプトを実行したい(8:00時から、それほど重要ではない)から19:00(最も重要な)まで。それが可能だ?
atコマンドを見たことがありますが、「until」または「before」の設定方法がわかりませんでした。

この質問は this とは異なります

3
Duns

Cronを使用してスケジューリングを行います。スケジュールは次のようになります

0 8-19 * * * /path/to/script

または

0 8,9,10,11,12,13,14,15,16,17,18,19 * * * /path/to/script

スクリプトは次のようになります

#!/bin/sh

./notify.sh --text "ricordati di bere" &&
play /mnt/musica/login.wav &&
zenity --info \
    --text="<span size=\"xx-large\">Time is $(date +%Hh%M)</span>\n\nricordati di <b>bere</b>." \
    --title="drink time"

シェルスクリプトを使用して10分ごとにメールを送信する方法は? "」も参照してください。

3
Kusalananda

Linuxを使用していると仮定すると、 timeout がこれを行う最も簡単な方法です。 08:00〜19:00は11時間なので、スクリプトを11時間実行するようにtimeoutに指示します。

timeout 11h /home/username/script

08:00にcronでジョブを開始し(または必要に応じて手動で)、別のcronエントリを使用して19:00に自動的に強制終了します。

kill -9 /home/username/script
1
K7AAY