1分後にシェルスクリプトを開始する方法は?
a.sh と b.sh の 2 つの bash ファイルがあるとします。a.sh
が実行された 1 分後 (または数秒後) に b.sh を実行したいとします。
a.sh で何をコーディングすればよいですか?
1分後にシェルスクリプトを開始する方法は?
a.sh と b.sh の 2 つの bash ファイルがあるとします。a.sh
が実行された 1 分後 (または数秒後) に b.sh を実行したいとします。
a.sh で何をコーディングすればよいですか?
単純。「at」を使用してジョブをスケジュールします。将来のあなたの瞬間を計算するための「日付」。
例:
echo b.sh | at now + 1 minute
また:
echo b.sh | at -t `date -v+60S "+%Y%m%d%H%M%S"`
-v+60S
現在時刻に 60 秒を追加します。追加する秒数を正確に制御できます。
しかし通常、あるプログラムを 1 分後に別のプログラムに起動させたい場合、1 分以上かからないか 100% 確信できるわけではありません。それでおしまい。が完了b.sh
する前に起動できます。a.sh
またはa.sh
、「計画」より 30 秒早く終了し、b.sh がより速く開始された可能性があります。
別のモデルをお勧めします。b.sh
最初に起動
する場所。a.sh
起動時に一時ファイルを作成します。execute はタスクであり、最後にその一時ファイルを削除します。
b.sh
一時ファイルが作成されてから削除されるのを監視します。そしてそのタスクを開始します。
a.sh の最後の行を作成します。
sleep 60 && b.sh
(b.sh が PATH のディレクトリにない場合は、b.sh へのフル パスにします。)
あなたはただすることができますsleep
:
a.sh
sleep 60
b.sh
at
または、より複雑なケースでは、次のコマンドを使用できます。
echo b.sh | at now + 1 minute
詳細については、at
man ページを参照してください。
コマンドを使用しat
ます。
使用方法については、を参照man at
してください。
このコマンドを使用して、スクリプトを 1 分間スリープさせることができます。
sleep 1m
次に、2番目のスクリプトを呼び出したいとき
bash a.sh
最初のスクリプトの開始から数秒後に 2 番目のスクリプトを実行する場合は、最初のスクリプトでこれを行うことができます。
b.sh &
そしてこれは2番目に:
sleep 10
# more commands
1 番目から 2 番目への引数として秒数を渡すことができます。
残念ながら、at
1 分より細かい時間の増分は行いません。
cron で両方のスクリプトを同時に実行するようにスケジュールし、必要な遅延を b.sh に入れます。