バックグラウンドプロセスのフォアグラウンドプロセスをバックグラウンドに配置します。

バックグラウンドプロセスのフォアグラウンドプロセスをバックグラウンドに配置します。

Bashを使用して他のバックグラウンドプロセスからバックグラウンドにプロセスを配置できますか?

たとえば、次のようなコードがあるとします。

function check_if_server_running {
    while [ server_running -ne true ]
        curl localhost:8000
    done
    bg %-
}

check_if_server_running &
./startServer

# Some other code...

bg %- を ./startServer の起動後にバックグラウンドで実行するように変更することはできますか?通常、bg%-は最後のプロセスをバックグラウンドに置きますが、私にとってはうまくいきません。

答え1

bgいいえ、 andfgコマンドは以下でのみ動作するため、この方法は実際には動作しません。インタラクティブシェルモードでは、すでにバックグラウンドで関数またはサブシェルを実行している場合はそうではありません。

(また、すでにbgバックグラウンドにあるジョブを自分でバックグラウンドに配置せずにバックグラウンドで停止したジョブを再開します。最初にジョブを停止するにはCtrl+を使用する必要がありますZ。)

バックグラウンドでサーバーを起動し、フォアグラウンドで実行されるのを待つようにコードを書き直してください。

function wait_for_server_running {
    while ! server_running; do
        curl localhost:8000
    done
}

./startServer &
wait_for_server_running

# Some other code...

これは達成しようとする目標と似ています。そうですか?

関連情報