シェルコマンドとして「一週間ずっと仕事を休む」ためのスクリプトを誰かに教えてもらえますか。
すべての実行でスリープする前に、次の週の日付と時刻を計算する必要があります。
少し便利なものを見つけました
startTime=$(date +%s)
endTime=$(date -d "next week" +%s)
timeToWait=$(($endTime- $startTime)) sleep $timeToWait
シェルコマンドとして「一週間ずっと仕事を休む」ためのスクリプトを誰かに教えてもらえますか。
すべての実行でスリープする前に、次の週の日付と時刻を計算する必要があります。
少し便利なものを見つけました
startTime=$(date +%s)
endTime=$(date -d "next week" +%s)
timeToWait=$(($endTime- $startTime)) sleep $timeToWait
date -d "next week"
言い方が違う
date -d "7 days"
これは「今から 7 日後」を意味しますが、これは次の週の始まりではなく、おそらくあなたが望むものでもありません。それが必要で、使用している場合はGNU sleep
、次のコマンドを発行できます。
sleep 7d
スクリプトを 7 日間スリープ状態にします。GNU スリープを使用していない場合は、7 日間隔を秒に変換する必要があります。
sleep 604800
翌週の開始が必要な場合は、これがksh
、または でさえ役立つ場合がありbash
ます。
let time=`date -d "next monday" +%s`-`date +%s`
sleep $time
とはいえ、この仕事には間違ったツールを使用していると思います。sleep
システムの再起動からシェル プロセスの強制終了まで、その間にさまざまなことが発生する可能性があります。
crond
およびcrontab
、atd
さらにはfrconやanacronなどat
のより最新のバリアント/補足を確認する必要があります。cron
なぜ1週間の睡眠が必要なのかお聞きしてもよろしいですか?
プロセスを1週間待ってから再試行/何かをしたい場合は、cronジョブの方が良いかもしれません。2つの理由 -->
1) 資源を節約する
2) なんらかの理由でシステムを再起動/ダウンする必要がある場合、シェル スクリプトが停止し、待っていたことは何も起こりません。
一方、cron ジョブは実行したいときに正確に実行され、そのようなシナリオからあなたを救います。いくつかの有用な例は、以下のリンクにあります
http://www.thegeekstuff.com/2009/06/15-practical-crontab-examples/
これは身をもって体験したから知った!:)
私は 1 回の長時間の待機に対して警告しましたが、1 週間の待機時間でこれを行うことはありません。しかし、私は過去にこれのバリエーションを使用しました:
waittime=
interval=
: ${waittime:?specify wait time in seconds}
: ${interval:?specify interval in seconds}
t0=SECONDS
target=$(( t0 + waittime ))
until
(( SECONDS > target ))
do
sleep $interval
done
coreutils
sleep
は後置をサポートしているd
ので:
sleep 7d
7日間寝ます。