特定の時間範囲内でコンピュータがアクティブになっている間にスクリプトをただちに一度だけ実行するにはどうすればよいですか?

特定の時間範囲内でコンピュータがアクティブになっている間にスクリプトをただちに一度だけ実行するにはどうすればよいですか?

コンピュータの電源を入れたら、指定した曜日に数時間以内にスクリプトを実行する必要があります。例:毎週月曜日07:00から10:00まで。

私はcronジョブを使用して、「曜日の数時間」と「マシンの電源が入るとすぐに」時間条件を独立して処理する方法を知っています。しかし、これまで私はこの2つを組み合わせたエレガントな解決策を見つけることができませんでした。

私は時間範囲の終わりに実行するオプションを探しました(しかし私が望むものではありません)。

Anacronのオプションも見ました。前に尋ねたこの質問にしかし、アナクロンの粒度は十分ではない。

そのような医師の期間をどのように実装できますか?クローンジョブ@rebootをスクリプトと組み合わせることはできますか?

ありがとうございます!

答え1

職業が欲しいようですね@reboot

その後、スクリプトは曜日と時刻を確認できます。

#!/bin/sh

day=$( date +%u ) # day of week as integer, 1 == Monday
tm=$( date +$k )  # time of day, 0-23

if [ "$day" -ne 1 ] || [ "$tm" -lt 7 ] || [ "$tm" -gt 10 ]; then
    # wrong day and/or time
    exit
fi

# do stuff here

関連情報