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' &