Linuxのジョブ管理

2021-11-15 (月) 10:44:17

Linuxのジョブ管理

ジョブの種類

  • フォアグラウンドジョブ
  • バックグラウンドジョブ

ジョブの実行

  • フォアグラウンド
    <command>
  • バックグラウンド ※コマンド末尾に"&"
    <command> &
  • ハングアップモード ※実行したジョブをログアウト後も(プロセスとして)実行し続ける
    nohup <command> &

実行したジョブの操作

フォアグラウンドジョブの操作

  • 強制終了
    • Ctrl + C
  • 一時停止
    • Ctrl + Z

bg

  • バックグラウンドで実行
    • 一時停止したジョブをバックグラウンドで再開
      bg ※カレントジョブを実行
      bg <job-number> ※指定したジョブ番号を実行

fg

  • フォアグラウンドで実行
    • バックグラウンドで実行中のジョブをフォアグラウンドにする
    • 一時停止したジョブをフォアグラウンドで再開
      fg ※カレントジョブを実行
      fg <job-number> ※指定したジョブ番号のジョブを実行

nohup

  • ハングアップモードで実行したジョブの操作
    • 指定したプロセスをHUPシグナルを無視するように設定する
      nohup -p <pid>
      nohup -pF <pid> ※強制的に設定

ジョブの確認

jobs

  • 動作中のジョブを一覧表示
    • jobs <option>
      jobs
      jobs -l ※PIDを表示
  • 指定したジョブを表示
    • jobs <option> %<job-no>
      jobs %% ※カレントジョブ
      jobs %+ ※カレントジョブ
      jobs %- ※直前に実行されたジョブ
      jobs %<job-no> ※指定したジョブ番号のジョブ
      
  • 表示内容
    • ジョブ番号 ※[n]で表示される
    • カレントジョブ"+"、直前に実行されたジョブ"-"
    • ジョブの状態
      Running実行中(バックグラウンド)
      Stopped一時停止中
      Terminated強制終了
      Done正常終了
      Exit異常終了

ジョブの終了

kill

kill %<job-no> ※終了
kill -KILL %<job-no> ※強制終了

補足

  • HUPシグナル
    • ログアウトや端末終了時にOSが発行するシグナル
    • 通常、HUPシグナルを受け取ったジョブは終了する。
    • nohupコマンドで実行したジョブは、HUPシグナルを受け取っても終了しない。

参照