質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.06%

Linuxのジョブについての質問,psとjobsの違い

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 3,942

spectrum

score 39

昨日帰る時に行った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はどうなっていますか?教えて下さいよろしく
お願い致します.

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+2

ジョブは、制御端末と結びついています。fg bg jobs と言ったジョブコントロールコマンドは、そのジョブの制御端末からしか実行できません。
なので、いったんログアウトしてしまったら、その端末で動いていたジョブについてはジョブ制御不可能になります。

killであれば、ジョブじゃなくてプロセスが対象なので、異なる端末からでも実行できます。

「プロセスとは何か」については説明しやすいのですが、「ジョブとは何か」については説明が難しいです。
関連キーワード:
プロセスグループ、プロセスリーダー、セッション、セッションリーダー

補足:
端末を切っても、もとの制御端末のままで作業を続行したい場合は、他の方の書いているように擬似端末ソフト(screen や tmux)を使います。そうすると再接続で同じ制御端末を使い続けられます。インターネットの向こうのサーバーにログインするときには必須ですね。
ログアウトしちゃダメですよ。ログアウトせず端末ソフトをいきなり終了させるか、ネットを切って下さい。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

ps で一覧されるのはプロセス、というのはよろしいですね。プロセスには親子関係があるというのも大丈夫でしょうか。たとえば pstree コマンドを使うと、親子関係がツリー上に表示されます。

ログインしてコマンドを打てる状態だと、何かしらの対話シェルが起動している状態です。bash とか。ジョブというのはその対話シェルにおいて、複数の処理(プロセスグループ)を扱うときの概念です。ですので、その対話シェルが終了すれば、そのシェル内で起動したジョブは終了します。ログアウトするということは、その際に使っていた対話シェルが終了するので、ログイン中に作ったジョブは死にます。

もし、ログアウト後もずっとジョブを実行させておきたい、という場合には、screen や tmux といったツールを使うとよいと思います。screen や tmux の機能はそれだけではないし、正確な説明ではないですがざっくり言いますと、対話シェルを起動する土台となるプロセスと、その土台プロセスに接続して操作する仮想端末になるプロセスとで構成されます。screen と実行すると、土台となるプロセスと端末プロセスが作られます。screen の中で複数の対話シェルを起動し、それを端末プロセスの中で切り替えて使うことができます。で、端末プロセスの側で土台プロセスとの接続を切ったり、またつないだりということもできます。
話を整理します。screen を実行し、そこの対話シェルで xxx とコマンドを打ってジョブを起動します。その後、screen をデタッチします(土台の screen との接続を切ります)。土台の screen は動き続け、その上の対話シェルも xxx コマンドもジョブも動き続けたままです。screen -ls とすると土台の上で動いている対話シェルのリストを見ることができます。この後、ログアウトしても土台は動き続けます。翌日とかに新たにログインし、screen -r とすると、デタッチしていた対話シェルに再び接続することができます。
ちょっとわかりにくい説明で済みません。

--- 追記

[takeyuki@localhost ~]$ screen
【この下から新しいウィンドウ】
[takeyuki@localhost ~]$ while sleep 1; do echo -n .; done
....
【適当なところで Ctrl+a d でデタッチ】
[takeyuki@localhost ~]$ screen -ls
There is a screen on:
        9538.pts-0.localhost    (Detached)
1 Socket in /var/run/screen/S-takeyuki.

[takeyuki@localhost ~]$ screen -r
【さっきの続きに戻る】
[takeyuki@localhost ~]$ while sleep 1; do echo -n .; done
.................................................................................................................................................................................................................................................................................

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

-1

お二人ともとても参考になりました。ありがとうございました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.06%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る