crontab を使用せずに毎日 13 CET にシェル スクリプトをスケジュールする

crontab を使用せずに毎日 13 CET にシェル スクリプトをスケジュールする

私は AIX サーバーで、毎日 13:00 に正確に実行する必要がある ksh シェル スクリプトを開発しています。CRONTAB、AT、WATCH、inotify、date -d などを使用する権限がありません。唯一のオプションは、スクリプトを継続的にループさせてバックグラウンドで実行することです。

while [ $(date +%H%M) != 1300 ]
do
actions
sleep 60
done

上記のコードを試しましたが、while条件が満たされるまでバックグラウンドで継続的に実行したくありません。sleepまたはwhileループを使用する他の方法、または継続的に実行するのではなく 1 回だけ実行する方法を提案してください。

答え1

私は でのみこれを実行しておりperl、 は使用したことはありませんkshが、なぜそれが不可能なのかわかりませんが、次のように実行しました (おそらくどの言語でも有効なコードではありません)。

while(true)
    starttime=`date +%s`
    actions
    sleep starttime+24*60*60-`date +%s`
end

これでは、アクションが 24 時間ごとに開始されるだけです。13:00 に実行させるには、開始時に 13:00 まで待機するループを追加するだけでよいと考えました。考えてみると、starttime+24*60*60次のように置き換えたほうがよいかもしれませんdate -d "13:00 tomorrow" +%s

関連情報