毎日13:00 CETでシェルスクリプトを予約する、crontabは不要

毎日13:00 CETでシェルスクリプトを予約する、crontabは不要

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

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

while上記のコードを試しましたが、条件が真になるまでバックグラウンドで実行され続けたくありません。他の方法sleepwhileループ、または継続的に実行されるのではなく、一度だけ実行される方法を使用することをお勧めします。

ベストアンサー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

おすすめ記事