すでに実行中のプロセスにプロセスを追加しますか? &&またはこのように

すでに実行中のプロセスにプロセスを追加しますか? &&またはこのように

この問題これは別の関連する質問にインスピレーションを与えました。始めると想像してください

% nohup a.sh &

その後、完了時に実行されますb.sh(例:処理される出力。どちらも完了するのに数時間かかる長期実行プロセスです)。a.shb.sha.sha.shb.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とは一致しません&&

おすすめ記事