この問題これは別の関連する質問にインスピレーションを与えました。始めると想像してください
% nohup a.sh &
その後、完了時に実行されますb.sh
(例:処理される出力。どちらも完了するのに数時間かかる長期実行プロセスです)。a.sh
b.sh
a.sh
a.sh
b.sh
基本的にシミュレーションしたい
% nohup a.sh && b.sh
b.sh
しかし、起動時に追加するのを忘れましたa.sh
。これは達成できますか?好ましくはzshで。
ベストアンサー1
プロセスを開始したシェルがまだそれを認識している場合(これを実行しようとするとjobs
)、組み込みシェルはwait
プロセスが完了するのを待つことができます。次のように動作します。
$ jobs
[1] nohup a.sh
$ wait -f %1 && nohup b.sh &
シェルから切断された場合、pidwait
コマンドは同様の方法で動作できます。ただし、最初のプロセスの終了値を取得できず、最初のプロセスが失敗しても、2番目のプロセスを実行できます。これはdoneとは一致しません&&
。