私は毎日正確に13時に実行する必要があるAIXサーバーでkshシェルスクリプトを開発しています。 CRONTAB、AT、WATCH、inotify、date -dなどを使用する権限がありません。唯一のオプションは、スクリプトを繰り返し繰り返し、バックグラウンドで実行することです。
while [ $(date +%H%M) != 1300 ]
do
actions
sleep 60
done
while
上記のコードを試しましたが、条件が真になるまでバックグラウンドで実行され続けたくありません。他の方法sleep
、while
ループ、または継続的に実行されるのではなく、一度だけ実行される方法を使用することをお勧めします。
答え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
。