Instiq
第1章 · Linuxのインストールと仮想マシン・コンテナの利用·v1.0.0·更新 2026/7/6·読了目安 約11分

変更要約: 初版(主題1.01・副主題1.01.1〜1.01.5に対応)

1.4プロセスの生成、監視、終了

この節の要点

基本的なプロセス管理を学びます。ジョブのフォアグラウンドバックグラウンド実行(&・bgfgjobs)、ログアウト後も実行を続ける nohupscreentmux、監視コマンド toppspstreeuptimepgrepシグナル送信(killpkillkillall)を押さえます。

長時間かかる処理を走らせながら別の作業をする、暴走したプロセスを止める、負荷の原因を特定する — サーバー運用の日常はプロセス管理の連続です。シェルのジョブ制御シグナル、監視コマンドの使い分けを身につけます。

1.4.1ジョブ制御とログアウト後の継続

  • コマンド末尾の &バックグラウンド起動。Ctrl+Z で一時停止 → bg でバックグラウンド再開・fgフォアグラウンドへ戻す。jobs で一覧。
  • nohup=ログアウト(端末切断=SIGHUP)後もコマンドを実行し続けさせる。nohup 長い処理 & が定型。
  • screentmux仮想端末(ターミナルマルチプレクサ)。セッションを保持したままデタッチ/再アタッチでき、SSH が切れても作業が残る。

1.4.2監視とシグナルによる終了

  • 監視=top(リアルタイムの CPU/メモリ上位)・ps(スナップショット。ps aux が定番)・pstree(親子関係をツリー表示)・uptime(稼働時間とロードアベレージ)。
  • pgrep=名前などの条件でプロセス ID を検索(pgrep -u user01 nginx)。
  • 終了=kill(PID 指定)・pkill(名前などの条件)・killall(名前完全一致)。既定は SIGTERM(15・穏当な終了要求)、応じない場合の最終手段が SIGKILL(9・強制終了)。SIGHUP(1)は端末切断/設定再読込に使われる。
試験ポイント

「ログアウト後も続行=nohup(または screen/tmux)」「一時停止からバックグラウンド再開=Ctrl+Z→bg」「まず SIGTERM・ダメなら SIGKILL」「名前で探す=pgrep/pkill・PID で送る=kill」 が定番です。kill -9 をいきなり使うのは正解になりにくい(後始末が走らない)ことも覚えておきましょう。

典型シナリオで通しましょう。ビルドのような長い処理は nohup make all > build.log & で始めれば、SSH が切れても続行します。もっと柔軟にするなら tmux でセッションを開き、Ctrl+b d でデタッチ→後から tmux attach で再開します。エディタ作業中に Ctrl+Z で抜けてしまったジョブは jobs で番号を確認し、fg %1 で戻すか bg %1 で裏に回します。負荷調査は uptimeロードアベレージの傾向を見て、top で CPU/メモリ上位を特定し、pstree で「どの親から生えたか」を確認する、という流れが定石です。止めるときは pgrep -f app で PID を確かめてから kill <PID>SIGTERM)→ 応じなければ kill -9 <PID>SIGKILL)と段階を踏みます。killall名前が完全一致するプロセス全部に送る点に注意(意図しない同名プロセスも巻き込む)。

やりたいこと使うもの備考
ログアウト後も実行継続nohup / screen / tmuxscreen/tmux は再アタッチ可
一時停止→裏で再開Ctrl+Z → bgfg で前面へ戻す
負荷の全体像uptime / topロードアベレージ→上位プロセス
穏当に停止→強制終了kill(SIGTERM) → kill -9(SIGKILL)いきなり -9 は避ける
注意

ひっかけ: 「kill はプロセス名を指定して終了させる」は誤りです。killPID を指定します(名前で指定するのは pkillkillall)。また「SIGKILL(9)はプロセスに後始末の機会を与える」も誤り=SIGKILL は捕捉不可能で即時終了、後始末(クリーンアップ)が走るのは SIGTERM の方です。

ジョブ制御・監視・シグナル送信の3分類にコマンドを整理した図。
制御・監視・終了で覚える

1.4.3この節のまとめ

  • ジョブ制御=& / Ctrl+Z / bg / fg / jobs。ログアウト耐性は nohup・screen・tmux
  • 監視=top/ps/pstree/uptime/pgrep。終了は SIGTERM→SIGKILL の段階、名前指定は pkill/killall

進捗の記録にはログインが必要です。

理解度チェック

(軽い確認用)

Q1. SSH 接続が切れても実行し続けてほしいバッチ処理を起動したい。適切なコマンドは?

Q2. エディタ作業中に Ctrl+Z を押してしまい、ジョブが停止した。このジョブをバックグラウンドで実行再開させるコマンドは?

Q3. 応答しなくなったプロセス(PID 4321)を終了させたい。最初に試みるべき操作として適切なのはどれ?

理解度を確認第1章「Linuxのインストールと仮想マシン・コンテナの利用」の問題を解く