サーバーの状態確認(プロセス, メモリー, ディスク容量)

サーバー状況(OS、ディストリビューション、プロセス、メモリー、ディスク容量、周辺機器)を確認するためのコマンドを紹介します。

OS、ディストリビューション

uname|OS情報確認

下記コマンドで、起動されたマシンの OS名称 ホスト名 OSのリリース番号 OSのバージョン OSのビット数 を確認できます。

uname -a

ディストリビューションの確認

Redhat/CentOSの場合、 /etc/redhat-release に記述されています。

cat /etc/redhat-release
$ cat /etc/redhat-release
CentOS release 6.8 (Final)

プロセス、メモリー

ps aux
プロセスごとのCPU、Memory利用率

  • VSS (virtual set size)
    • 仮想メモリ(Kバイト)
  • RSS (Resident set size)
    • 物理メモリの消費量(Kバイト)

RSS利用順で表示したい場合、以下コマンドを実行します。

ps aux --sort rss
$ ps aux --sort rss
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         2  0.0  0.0      0     0 ?        S    07:14   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    07:14   0:00 [migration/0]
root         4  0.0  0.0      0     0 ?        S    07:14   0:00 [ksoftirqd/0]
                      (省略)       
apache    1968  0.0  0.6 310472  6160 ?        S    07:14   0:00 php-fpm: pool www            
apache    1969  0.0  0.6 310472  6160 ?        S    07:14   0:00 php-fpm: pool www            
root      1959  0.0  0.6 310472  6268 ?        Ss   07:14   0:00 php-fpm: master process (/etc/php-fpm.conf)

ps -ef
現在実行されているプロセスの情報

オプション 概要
-e すべてのプロセスを選択
-f 完全なフォーマットで表示
$ ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 07:14 ?        00:00:00 /sbin/init
root         2     0  0 07:14 ?        00:00:00 [kthreadd]
root         3     2  0 07:14 ?        00:00:00 [migration/0]
root         4     2  0 07:14 ?        00:00:00 [ksoftirqd/0]
root         5     2  0 07:14 ?        00:00:00 [stopper/0]
                      (省略)  
root      1959     1  0 07:14 ?        00:00:00 php-fpm: master process (/etc/php-fpm.conf)
apache    1964  1959  0 07:14 ?        00:00:00 php-fpm: pool www            
apache    1965  1959  0 07:14 ?        00:00:00 php-fpm: pool www            
apache    1967  1959  0 07:14 ?        00:00:00 php-fpm: pool www            
apache    1968  1959  0 07:14 ?        00:00:00 php-fpm: pool www   

pstree
親子関係によるプロセス階層構造を表示

$ pstree
init─┬─VBoxService───7*[{VBoxService}]
     ├─auditd───{auditd}
     ├─crond
     ├─dhclient
     ├─master─┬─pickup
     │        └─qmgr
     ├─6*[mingetty]
     ├─mysqld_safe───mysqld───27*[{mysqld}]
     ├─nginx───nginx
     ├─ntpd
     ├─php-fpm───5*[php-fpm]
     ├─rpc.statd
     ├─rpcbind
     ├─rsyslogd───3*[{rsyslogd}]
     ├─sshd───sshd───sshd───bash───pstree
     └─udevd───2*[udevd]

pmap
プロセスのメモリマップを表示

psなどで調べたPIDを引数に指定します。

pmap [PID]
$ ps -ef | grep nginx
root      2016     1  0 07:14 ?        00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx     2020  2016  0 07:14 ?        00:00:00 nginx: worker process                   
vagrant   5582  5513  0 07:31 pts/0    00:00:00 grep nginx
$ 
$ 
$ sudo pmap 2016
2016:   nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
00007f9bd1f99000     52K r-x--  /lib64/libnss_files-2.12.so
00007f9bd1fa6000   2044K -----  /lib64/libnss_files-2.12.so
00007f9bd21a5000      4K r----  /lib64/libnss_files-2.12.so
00007f9bd21a6000      4K rw---  /lib64/libnss_files-2.12.so
                  (省略)

top
実行中プロセスをリアルタイム監視

top - 07:33:43 up 19 min,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  99 total,   1 running,  98 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.3%us,  0.0%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1020052k total,   497704k used,   522348k free,    12948k buffers
Swap:  1015804k total,        0k used,  1015804k free,   133772k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                                                                 
    1 root      20   0 19228 1504 1236 S  0.0  0.1   0:00.90 init                                                                                                                                                                                                    
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                                                                                                                                                                
    3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0     

topコマンド実施後、

  • M(大文字) と入力すると消費メモリの順に表示されます。
  • P(大文字) と入力するとCPU使用率の順に表示されます。
  • T(大文字) と入力すると時間消費の順に表示されます。

終了する際は q を入力します。

vmstat
CPU、Memoryなどをリアルタイム監視

$ vmstat 1 6
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 320168  34492 249144    0    0    12     4   21   49  0  0 100  0  0       
 0  0      0 320144  34492 249144    0    0     0     0   18   41  0  0 100  0  0       
 0  0      0 320144  34492 249144    0    0     0     0   16   43  0  0 100  0  0       
 0  0      0 320144  34492 249144    0    0     0     0   27   57  0  0 100  0  0       
 0  0      0 320144  34492 249144    0    0     0     0   18   46  0  0 100  0  0       
 0  0      0 320144  34492 249144    0    0     0     0   17   44  0  0 100  0  0   

メモリー ディスクI/O CPU利用率 のどこがボトルネックであるか判定するのに活用できます。

kill [PID]
プロセスに対してシグナルを送信

PIDを指定してシグナルを送信します。

kill [PID]
$ kill -9 2021

※シグナル
プロセスに送られるメッセージ。受け取ったシグナルに応じてプロセスは、終了や再起動を行なう。

killall [プロセス名]
プロセスに対してシグナルを送信

プロセス名を指定してシグナルを送信します。

killall [プロセス名]

free
システム全体の空きメモリ状況

システム全体の空きメモリと利用メモリの量を表示します。

$ free
             total       used       free     shared    buffers     cached
Mem:       1020052     498804     521248        512      13916     133992
-/+ buffers/cache:     350896     669156
Swap:      1015804          0    1015804
オプション 概要
-k KB単位で表示 (デフォルト)
-m MB単位で表示
  • 個々のプロセスのメモリーの使用状況を調べるには topps を用います。
  • Linuxでは、各プロセスにメモリを割り振った残りをbuffercacheに利用しているため、free領域にあまり割り当てられてないことが多いです。

ipcs
プロセス間通信の状態を表示

共有メモリー、セマフォ、メッセージキューを表示します。

$ ipcs

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      

------ Semaphore Arrays --------
key        semid      owner      perms      nsems     

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages    

ディスク

df
ファイルシステムの使用状況を表示

下記用途で使用します。

  • どの様にパーティションが区切られているのかの確認
  • 各パーティションに割り当てられた容量に対してどの程度使用しているかの確認

-hオプション をつけると GM など、適切な単位付きで容量を表示します。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        992M   56K  992M   1% /dev
tmpfs          1001M     0 1001M   0% /dev/shm
/dev/xvda1      7.8G  2.7G  5.1G  35% /

du
指定したファイルの容量を表示

指定したファイルやディレクトリの使用容量を集計します。引き数がない場合 カレント・ディレクトリ の容量を集計します。

$ du httpd
4       httpd/healthd
1372    httpd/rotated
10864   httpd
$ du httpd/access_log 
9480    httpd/access_log

-aオプションをつけると、ディレクトリだけでなく、全ファイルの容量を表示します。

$ du -a httpd
4       httpd/error_log
9480    httpd/access_log
4       httpd/healthd
228     httpd/rotated/access_log1527516061.gz
204     httpd/rotated/access_log1530889261.gz
304     httpd/rotated/access_log1534107662.gz
384     httpd/rotated/access_log1539518461.gz
248     httpd/rotated/access_log1526104861.gz
1372    httpd/rotated
10864   httpd

周辺機器

lsusb
USBデバイスの情報を表示

USBデバイスの情報を表示します。

lspci
PCIデバイスの情報を表示

PCIとは、コンピュータのプロセッサと周辺機器との間で通信を行うための方法の1つです。
例えば、マザーボード上のPCIスロットにLANカード(PCIカード)を差し込みます。認識すればネットワークが使用できます。

lsmod
ロードされているカーネルモジュールを表示

カーネルモジュールとは、Linuxカーネルで動的に追加されるプログラム部品(モジュール)のことです。
カーネルを再構築せず機能を追加できます。代表的なものとしてデバイスドライバ(デバイス制御のプログラム)があげられます。

modprobe
デバイスドライバのロード

デバイスドライバを手動でロードする場合に利用します。通常は自動的にロードされます。

わくわくBank.
ソフトウェア開発で必要とされる技術、用語、概念を整理しています。