linuxでバックグラウンド処理を便利にするコマンド+おまけ - 絶品ゆどうふのタレ
disownコマンド - Do You PHP はてな
jobs bg disown: いち雑記
記事を参考にバックグラウンドに回して切り離してみる
- シェルAを起動
- ping 192.168.0.1 を実行
- CTRL+Zで停止
- jobsで確認、disown %1 で切り離す
- シェルBにてpstreeで確認
が、切り離されていない。
シェルA上のjobsでは確かにジョブがいなくなっているが、シェルB上のpstreeではpingがbashにくっついたままになっている。
原因判明
ジョブがサスペンド状態で切り離されると、シェルAを閉じたときに釣られてジョブpingも死ぬ。(画面をよく見たらそういう警告メッセージが出てた)
生きてさえいればいいので、次の手順で
- シェルAを起動
- ping 192.168.0.1 を実行
- CTRL+Zで停止
- jobsで確認、disown %1 で切り離す
ここでpingのプロセスIDをメモっておく - シェルBにて kill -SIGCONT
を実行し、ジョブを切り離された状態で再開させる
これであとはシェルAを殺してもバックグラウンドで動作する。