11

1分後にシェルスクリプトを開始する方法は?

a.sh と b.sh の 2 つの bash ファイルがあるとします。a.sh
が実行された 1 分後 (または数秒後) に b.sh を実行したいとします。
a.sh で何をコーディングすればよいですか?

4

7 に答える 7

26

単純。「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一時ファイルが作成されてから削除されるのを監視します。そしてそのタスクを開始します。

于 2012-05-08T10:56:18.053 に答える
4

a.sh の最後の行を作成します。

sleep 60 && b.sh

(b.sh が PATH のディレクトリにない場合は、b.sh へのフル パスにします。)

于 2012-05-08T10:49:50.043 に答える
3

あなたはただすることができますsleep

a.sh
sleep 60
b.sh

atまたは、より複雑なケースでは、次のコマンドを使用できます。

echo b.sh | at now + 1 minute

詳細については、atman ページを参照してください。

于 2012-05-08T10:50:39.963 に答える
1

コマンドを使用しatます。

使用方法については、を参照man atしてください。

于 2012-05-08T10:54:28.493 に答える
0

このコマンドを使用して、スクリプトを 1 分間スリープさせることができます。

sleep 1m

次に、2番目のスクリプトを呼び出したいとき

bash a.sh
于 2012-05-08T10:51:19.340 に答える
0

最初のスクリプトの開始から数秒後に 2 番目のスクリプトを実行する場合は、最初のスクリプトでこれを行うことができます。

b.sh &

そしてこれは2番目に:

sleep 10
# more commands

1 番目から 2 番目への引数として秒数を渡すことができます。

残念ながら、at1 分より細かい時間の増分は行いません。

于 2012-05-08T12:42:51.253 に答える
0

cron で両方のスクリプトを同時に実行するようにスケジュールし、必要な遅延を b.sh に入れます。

于 2016-09-13T12:02:12.157 に答える