揮発性のメモ2

http://d.hatena.ne.jp/iww/

バックグラウンドジョブに出来ない

linuxでバックグラウンド処理を便利にするコマンド+おまけ - 絶品ゆどうふのタレ
disownコマンド - Do You PHP はてな
jobs bg disown: いち雑記
記事を参考にバックグラウンドに回して切り離してみる

  1. シェルAを起動
  2. ping 192.168.0.1 を実行
  3. CTRL+Zで停止
  4. jobsで確認、disown %1 で切り離す
  5. シェルBにてpstreeで確認

が、切り離されていない。
シェルA上のjobsでは確かにジョブがいなくなっているが、シェルB上のpstreeではpingbashにくっついたままになっている。


原因判明
ジョブがサスペンド状態で切り離されると、シェルAを閉じたときに釣られてジョブpingも死ぬ。(画面をよく見たらそういう警告メッセージが出てた)
生きてさえいればいいので、次の手順で

  1. シェルAを起動
  2. ping 192.168.0.1 を実行
  3. CTRL+Zで停止
  4. jobsで確認、disown %1 で切り離す
    ここでpingのプロセスIDをメモっておく
  5. シェルBにて kill -SIGCONT を実行し、ジョブを切り離された状態で再開させる

これであとはシェルAを殺してもバックグラウンドで動作する。