6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

改めてLinuxコマンドを理解する[プロセスについて]

Posted at

はじめに

こんにちは!ITスクールRareTECHにてCS(Customer Support)を担当している池村です。今回の記事はLinuxのプロセスについて解説します。プロセスは簡単にいうと、今動いているプログラムのことです。

7c6ec55d-86e0-499d-a4c6-9644bfeee43e_720.png

psコマンド

プロセスはLinuxでも、Macでも、Windowsでも同じ概念で動いています。
今パソコン上で動いている全てのプログラムは、全てプロセスとしてOSが管理しています。

まずはLinuxにおけるプロセスの確認方法を見ていきましょう。

プロセスの一覧を表示
ps

このコマンドをubuntuで叩いてみた場合、以下のようなプロセスが表示されます。
image.png

psコマンドをオプションをつけずに実行すると、画像のように少ない情報しか表示されません。

PID

このPIDはプロセスIDのことで、プロセスごとに一意の識別子として付与されます。
このPIDを指定して、プロセスを終了させたりすることも可能です。

TTY

これはターミナル端末の情報ですね。このプロセスが動いているシェルはどれか?を表示してくれています。

当たり前ではありますが、Linuxでは複数のシェルが開かれることが多いです。なので、どのプロセスがどの端末で動いているのかを表示するのは当然と言えます。

TIME

こちらはCPUの使用時間です。psコマンドも、bashコマンドもCPUが瞬時に実行しているので時間なんてかかっていないようですね。

CMD

CMDはCOMMANDを省略したもので、コマンド名そのものです。
grepコマンドなどを併用して、特定のプロセスのみを表示することも可能です。

grepの併用
ps | grep bash

よく使うオプションについて

psコマンドは、よく使うオプションもありますので、こちらでご紹介します。
よく併用して使われるのがauxの三つです。

auxの使用
ps aux

これを実行すると、同じLinuxのOSで、違う端末のプロセスも表示されます。
今回はtmuxを使いつつ、プロセスの確認をしていきましょう。

tmuxを起動
tmux

tmuxを利用したことがない方はこちらの記事で学習してみてください。

tmuxを開いたら、画面を分割して、ペインを二つにしておきましょう。
まずは片方のシェルで、psコマンドと、ps auxコマンドを順番に実行します。
image.png

tmuxももちろんプロセスに追加されていますね。

auxをつけた方は、別のシェルのプロセスも表示されているのですが、それ以外にも様々な情報が表示されています。一つずつ見ていきましょう。

USER

このコマンドを実行したユーザー情報です。今回は全てrootユーザーが実行していますが、このLinuxにアクセスしているユーザーが複数いる場合は、そのユーザー名も表示されます。

&CPU

CPU使用率をパーセンテージ(%)で表示してくれます。数字の高いプロセスがCPUを多く使っている、ということになります。

%MEM

プロセスが使用している メモリの割合をパーセンテージ(%)で表示しているものです。

VSZ

仮想メモリの使用量のことで、そのプロセスがメモリ上にどれだけ領域を確保したかであり、実際に使用している量ではありません。

RSS

こちらは実際に使われたメモリの使用量になります。
例えば、プログラムが1GBのメモリ領域を確保しても、実際に100MBしか使わなければ、VSZは1GBですが、RSS(メモリ使用量)は100MBになるということです。

VSZとRSSは無理に理解しようとしなくてOKです。初学者はこういったところをスルーして、必要になったら調べるようにしていきましょう。

STAT

これはステータスの略になっています。今現在のプロセスの状態を教えてくれています。

プロセスの種類について

プロセスにも種類があるので、まずはここで少し紹介をいたします。
Linuxのプロセスは、実行状態や動作の仕組みによって分類がされていて、以下のようになります。

プロセスの種類 説明
フォアグラウンドプロセス ユーザーが直接実行し、操作を待つ(例: ls, vim
バックグラウンドプロセス &をつけて実行し、シェルから離れる(例: sleep 100 &
デーモンプロセス OSのバックグラウンドで動作(例: systemd, sshd
ゾンビプロセス 仕事が終わったのに、まだ残っているプロセス
孤立プロセス 親(実行したプロセス)がいなくなり、OSに預けられたプロセス
STATに表示されるコードの種類

STATにはSsや、R+などの表記(コード)があります。
その表記についても以下にまとめます。

コード 意味 説明
R 実行中(Running) CPU で実行中のプロセス
S スリープ(Sleep) 一時的に待機状態(I/O待ちなど)
D 割り込み不可スリープ(Uninterruptible Sleep) ディスク I/O などでブロック中
T 停止(Stopped) Ctrl+Z で停止されたプロセス
Z ゾンビ(Zombie) 終了済みだが親プロセスが回収していないプロセス
追加コード 意味
+ フォアグラウンドプロセス
< 高優先度
N 低優先度
s セッションリーダー(bash など)
l マルチスレッド(L ではなく小文字 l

上記の表を全て覚えるのは難しいですが、Rが実行中、Sが待機、Tが停止などについては理解しておきましょう。

START

こちらはプロセスがいつ開始されたかを表示してくれています。

  • 時刻 (11:30) → 今日起動
  • 日付 (Jan08) → 1週間以上前に起動
  • YYYY-MM-DD → 1年以上前に起動

auxのオプションの意味

オプションについても表にまとめておきます。

コマンド 説明
ps 現在のシェル(TTY)で動いているプロセスのみ表示
ps a 他のユーザーのプロセスも表示(ただし、ログインセッション内)
ps u ユーザー名とプロセス情報を表示
ps x バックグラウンドプロセスも表示
ps aux システム全体のすべてのプロセスを表示(他のユーザー含む)

psコマンドは、基本的にauxをつけることが多いですので、脳死でつけるものくらいに覚えておいてください。

プロセスを終了させるコマンド

プロセスを強制的に終了させるコマンドがあります。
それがkillコマンドです。このkillコマンドを使って、先ほど開いていたtmuxのペインを強制的に終了させようと思います。

基本的なコマンドの使い方は以下になります。

killコマンドの使い方
kill <PID>

強制終了したい時

強制終了オプション
kill -9 <PID>

プロセス名で指定

pkill
pkill <プロセス名>

tmuxのペインを強制終了して�る

まずはプロセス一覧を確認

一覧
root@2be0b453da33:/# ps aux                                                                                           │
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND                                            │
root           1  0.0  0.0   4300   720 pts/0    Ss   11:03   0:00 /bin/bash                                          │
root         219  0.0  0.0   8952  1268 pts/0    S+   11:09   0:00 tmux                                               │
root         221  0.0  0.0   9624  3584 ?        Ss   11:09   0:01 tmux                                               │
root         230  0.0  0.0   4300  1792 pts/2    Ss   11:11   0:00 -bash                                              │
root         255  0.0  0.0   4300  3420 pts/1    Ss+  12:25   0:00 -bash                                              │
root         261 50.0  0.0   7632  3676 pts/2    R+   12:25   0:00 ps aux        

これをみる限り、ps auxを実行したのが今のシェルなので、pts/2が今いるペイン、pts/1がもう一つのペインのようです。

killしてみる
kill -9 255

tmuxは普通にkillしても閉じられないので、今回は-9のオプションを使用します。

killコマンドを叩く前
image.png

killコマンドを叩いた後
image.png

ペインが消えました。
ps auxコマンドを叩いて、本当になくなっているのかも確かめてください。

killコマンドは使い方によっては少々危険ですが、明らかにCPUやメモリを消費しているプロセスを終了させるのに便利なコマンドです。

おわりに

今回はLinuxにおけるプロセスについてご紹介しました。
MacでもWindowsでも、プロセスを終了させることで、余計に動いているものを消すことができますので、消しても大丈夫なプロセスを消して試してみてください。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?