バックグラウンドで複数のnohupコマンドを実行する

バックグラウンドで複数のnohupコマンドを実行する

cmd1とcmd2という2つのコマンドがあります。どちらの場合も cmd2 は完了に時間がかかります。 cmd2を最初に実行してからcmd1を実行する必要があります。

以下を実行してみてください。

bash$ (nohup ./cmd2>result2 &) && nohup ./cmd1>result1 &

または

bash$ (nohup ./cmd2>result2 &) ; nohup ./cmd1>result1 &

ただし、両方ともcmd1がcmd2が完了するのを待たずにresult1がいっぱいになることがわかります。

cmd1とcmd2の両方がnohupプロセスで、バックグラウンドで実行する必要があるときにcmd2の後にcmd1を実行するにはどうすればよいですか?

答え1

両方を作成し、cmd1並列に実行しました。cmd2「バックグラウンドで cmd2 を実行し、切断します。バックグラウンドで cmd1 を実行し、切断します。」意味は「cmd2をバックグラウンドで実行し、完了するとcmd1を実行します(またbackground)。」 「バックグラウンドジョブとの関連付けがなくなったため、最初にcmd2を実行してからcmd1を実行するバックグラウンドジョブを設計する必要があります。これはcmd2; cmd1、(またはcmd2が成功した場合にのみcmd1を実行するには)バックグラウンドで実行されているシェルを起動するように指示するcmd2 && cmd1必要があります。nohup

nohup sh -c './cmd2 >result2 && ./cmd1 >result1' &

答え2

nohupを使わなくても大丈夫なら:

{ command1 >result1 2>&1 && command2 >result2 2>&1 ; } & disown

答え3

ちょうど使用:

nohup ./cmd2>result2 & nohup ./cmd1>result1 & nohup ./cmd3>result3 &

答え4

cmd2とcmd1を正確に使用していることを教えてください。これは、ジョブの種類と目的のコマンド出力によって異なります。コマンドを使用してEnterキーをダブルクリックする問題に直面した場合は、私の方法で解決できます。郵便はがき

この道にも行けます。

nohup `cmd2 && ccmd1` > Output.out 2> Error.err < /dev/null & 

下記のスクリーンショットをご覧ください。ここでは3つのコマンドを使用し、すべてのコマンドは1つずつ順次実行されます。これを行うには、バックティックを使用します。スクリーンショットで日付タイムスタンプも確認できます。 sleepコマンドには60秒があるため、60秒後に次のコマンドが正常に実行されます。 jobsコマンドを使用して、バックグラウンドでまだ実行されているコマンドがあることを確認します。ここではありません。表示できる位置数は1個です。

nohup 複数のコマンド

このスクリーンショットはここにあります協会また、目立たない場合

関連情報