Linux入門

プロセス管理完全ガイド【ps/kill/systemctl】

Linux入門
記事内に広告が含まれています。

「応答しないプロセスをどうやって停止するの?」「nginxが起動しているか確認したい」そんな疑問をこの記事で解決します。

プロセスとは?

プロセスとは、実行中のプログラムのことです。Linuxでは複数のプロセスが同時に動いており、それぞれ固有のPID(プロセスID)を持ちます。

ps コマンド:プロセスを確認する

ps aux 出力フィールドの読み方
▲ USERはプロセスの実行ユーザー、PIDは固有のID、%CPUと%MEMはリソース使用率
# 全プロセスを表示
$ ps aux

# 特定プロセスを検索(grepで絞り込む)
$ ps aux | grep nginx

# プロセスをツリー形式で表示
$ ps auxf

# リアルタイム監視
$ top        # 標準ツール
$ htop       # 見やすい版(要インストール: sudo apt install htop)

kill コマンド:プロセスを停止する

killシグナル一覧 SIGTERM SIGKILL 比較表
▲ デフォルトはSIGTERM(15)で正常終了を要求。強制終了が必要なときのみ -9(SIGKILL)を使う
# PIDを指定して終了(SIGTERMがデフォルト・正常終了を要求)
$ kill 1234

# 強制終了(最終手段。プロセスは後処理不可)
$ kill -9 1234

# プロセス名で終了(完全一致)
$ killall nginx

# プロセス名で終了(部分一致)
$ pkill nginx

# PIDの調べ方
$ pgrep nginx       # PIDのみ表示
$ pidof nginx       # PIDのみ表示(別コマンド)

systemctl:サービスを管理する

systemdベースのLinux(Ubuntu 16.04以降など)では、systemctl コマンドでサービス(デーモン)を管理します。startとenableは別物です。startは今すぐ起動、enableはOS起動時の自動起動設定です。

systemctlコマンド早見表
▲ start/stop/restart は即時反映。enable/disable はOS再起動後から有効。statusで現在の状態を確認できる
# nginxの状態確認(Active: activeなら起動中)
$ sudo systemctl status nginx

# サービスのログを確認
$ journalctl -u nginx
$ journalctl -u nginx -f    # リアルタイムで追跡
$ journalctl -u nginx --since "1 hour ago"  # 直近1時間

まとめ

  • ps aux | grep プロセス名:プロセスの確認とPID取得
  • kill PID:正常終了(SIGTERM)、kill -9 PID:強制終了(最終手段)
  • killall:名前完全一致で終了、pkill:部分一致で終了
  • systemctl start/stop/restart:即時の起動・停止・再起動
  • systemctl enable/disable:OS起動時の自動起動設定(即時反映ではない)
  • journalctl -u サービス名:サービスのログ確認

関連記事

ディスク・メモリ使用量の確認【df/du/free】

ログファイルの見方と管理【journalctl/logrotate】

📋 Linux入門チートシート完全版で全コマンドを一気に復習できます。

コメント

タイトルとURLをコピーしました