質問: 昨日帰る時に行ったlinuxでのバックグラウンドジョブが今どういう状況になっているのか教えて下さい. また,止まっているなら再開したいし,フォアグラウンドに持って行きたいです. 昨日 $ xxx & として,あるソフトを実行してログアウトして帰りました. 今日来てpsと打ったら $ ps PID TT STAT TIME COMMAND aaa 2 S bbb xxx とでてきました.(aaa,bbb,xxxは適当) 次にfgと打ったらエラーが出ました. その次にpsで調べたところコマンドxxxのSTATがRに変わっていました. ところが $ jobs と打っても何も出てきません. psではSTATがRなのにjobsでは何も出てこないのがよく分かりません. このジョブxxxはどうなっていますか?教えて下さいよろしく お願い致します.
回答: ジョブは、制御端末と結びついています。fg bg jobs と言ったジョブコントロールコマンドは、そのジョブの制御端末からしか実行できません。 なので、いったんログアウトしてしまったら、その端末で動いていたジョブについてはジョブ制御不可能になります。 killであれば、ジョブじゃなくてプロセスが対象なので、異なる端末からでも実行できます。 「プロセスとは何か」については説明しやすいのですが、「ジョブとは何か」については説明が難しいです。 関連キーワード: プロセスグループ、プロセスリーダー、セッション、セッションリーダー 補足: 端末を切っても、もとの制御端末のままで作業を続行したい場合は、他の方の書いているように擬似端末ソフト(screen や tmux)を使います。そうすると再接続で同じ制御端末を使い続けられます。インターネットの向こうのサーバーにログインするときには必須ですね。 ログアウトしちゃダメですよ。ログアウトせず端末ソフトをいきなり終了させるか、ネットを切って下さい。