0

現在実行中のタスク/プロセスがあります。最初のタスクが完了したら、別のタスクを開始するようにスケジュールしたいと思います。

Linuxでそれを行うにはどうすればよいですか?

(最初のタスクを停止して、次から次へとタスクを開始するスクリプトを作成することはできません)

4

2 に答える 2

2

やや貧弱なスペックですが、

watch -n 1 'pgrep task1 || task2'

仕事をするかもしれません。

于 2013-01-16T21:49:49.443 に答える
0

待ちたい。

マニュアルのセクション2にあるシステムコール、そのようなバリエーションの1つ、waitpidまたはこの目的のために明示的に設計されたシェルビルトインのいずれかです。


両方のプロセスが販売の子孫であるため、シェルビルトインはもう少し自然です。したがって、次のようなスクリプトを記述します。

#!/bin/sh
command1 arguments &
wait 
command2 args

システムコールを使用するには、フォークするプログラムを作成し、子で最初のコマンドを起動してからwait、2番目のプログラムを実行する必要があります。

のマンページは次のようにwait (2)述べています。

wait()およびwaitpid()
wait()システムコールは、子の1つが終了するまで、現在のプロセスの実行を一時停止します。呼び出しwait(&status)は、次と同等です。

      waitpid(-1, &status, 0);

waitpid()システムコールは、pid引数で指定された子が状態を変更するまで、現在のプロセスの実行を一時停止します。

于 2013-01-17T00:15:24.377 に答える