技術者になりたい何か

技術者になりたい何かの覚書的な何かです

リダイレクトとかのつかいかた

前提的な

・コマンドの実行結果は通常端末上に表示される。

・コマンドへの入力は通常キーボードから。

⇒これをファイルに出力、ファイルから入力するのがリダイレクト。

 

ファイルに書き込むあれこれ

コマンド > ファイル

・実行結果をファイルに書き込む。
・ファイルが無いときは新規作成。
・ファイルがあるときは上書き。

$ ls -l >ls.txt
$ cat ls.txt
total 79344
drwxr-xr-x 2 tmin tmin 4096 Oct 15 22:14 ビデオ
drwxr-xr-x 2 tmin tmin 4096 Oct 15 22:14 テンプレート
drwxr-xr-x 2 tmin tmin 4096 Oct 15 22:14 デスクトップ
drwxr-xr-x 2 tmin tmin 4096 Oct 15 22:14 ダウンロード
drwxr-xr-x 2 tmin tmin 4096 Oct 15 22:14 ドキュメント
drwxr-xr-x 2 tmin tmin 4096 Feb 26 12:34 backup
drwxr-xr-x 3 tmin tmin 4096 Oct 15 23:07 css
drwxr-xr-x 6 tmin tmin 4096 Oct 15 23:11 esuteru.com
~~中略~~
-rw-r--r-- 1 root root 2920 Oct 1 16:49 update.log
-r--r--r-- 1 root root 72448981 Oct 1 19:15 VMwareTools-10.0.10-4301679.tar.gz
drwxr-xr-x 9 root root 4096 Aug 26 2016 vmware-tools-distrib
drwxr-xr-x 5 tmin tmin 4096 Sep 9 21:50 wordpress
-rw-r--r-- 1 tmin tmin 8402893 Sep 10 14:12 wordpress-4.6.1-ja.tar.gz
drwxr-xr-x 2 tmin tmin 4096 Oct 15 22:14 公開
drwxr-xr-x 2 tmin tmin 4096 Oct 15 22:14 画像
drwxr-xr-x 2 tmin tmin 4096 Oct 15 22:14 音楽

 

コマンド >> ファイル

・実行結果をファイルに書き込む
・ファイルが無いときは新規作成
・ファイルがあるときは「追記する」


$ pwd > pwdtest
$ cat pwdtest
/home/tmin
$ pwd >> pwdtest
$ cat pwdtest
/home/tmin
/home/tmin

 

コマンド 2> ファイル

ファイルに標準エラー出力を書き込む。

$ cat / 2> errortest
$ cat errortest
cat: /: ディレクトリです

コマンド < ファイル

ファイルの内容をコマンドの標準入力に送る。

 

実践&活用

MySQLのDBバックアップ時。またはリストアするとき。

基本

mysqldump -u ユーザ名 -p DB名 > 出力先ファイル名

全DBのバックアップをdump.sqlに書き出し。

mysqldump -u root -x --all-databases > dump.sql

# mysqldump -u root -p -x --all-databases > dump.sql

# mysqldump -u root -p db_redmine > redmine.sql

 

db_redmineのバックアップをredmine.sqlに書き出し。

DBの復元⇒ダンプファイルからmysqldumpに送る

mysql -u ユーザ名 -p DB名 < ダンプファイル名



全DBの復元

mysql -u root -p < dump.sql

上の方で作ったdump.sqlから全DBを復元するには

# mysql -u root -p < dump.sql

同様にdb_redmineのみ復元の場合

# mysql -u root -p db_redmine < redmine.sql


Debian系でインストールされているパッケージの一覧バックアップ&リストから一撃インストール

dpkgコマンドからlistファイルに書き出し。

dpkg --get-selections > list

取っておいたlistファイルから読み込んで一撃インストール!!

dpkg --set-selections < list
apt-get dselect-upgrade

基本的にはバックアップとかリストアとか。
あとは自動で動かしたシェルやらなんやらのログを出したいときとかに使うと幸せになれるかもしれない。

ちなみに書き出し系のリダイレクトは実行したディレクトリに書き出しファイルを作成するので、(ディレクトリ指定はできる)ファイルの出力先は作業できるディレクトリにしといた方が吉。

 

 

Linuxコマンドでの引用符のつかいかた

grepとかによく使う引用符。

種類

シングルクォーテーション('')

この中は全て文字列と解釈される。

ダブルクォーテーション(" ")

この中も文字列。
ただし変数が入っているときは展開される。

バッククォーテーション(` `)

この中にコマンドが入っていれば実行結果が展開される。
変数が入っているときは変数を展開し、中身のコマンドを実行する。

具体例

dateコマンドと変数DATEにdateをセットした時の出力を比べる

$ date
Fri Feb 24 11:57:36 JST 2017

$ echo "date"
date
$ echo 'date'
date
$ echo `date`
Fri Feb 24 12:01:23 JST 2017

 

変数はないので、引用符内の「date」が文字列として扱われるか、コマンドとして扱われるかの違いのみ。
'' ""の中身は文字列として扱われるのでそのまま「date」を出力。
``の中身はコマンドとして解釈されて実行結果が展開されるので、$ dateの実行結果がechoされる。

変数にdateをせっと

$ DATE=date

 これで$DATE=date

$ echo "$DATE"
date
$ echo '$DATE'
$DATE
$ echo `$DATE`
Fri Feb 24 12:03:44 JST 2017

二重引用符の時は$DATEの中身が展開される(=date)けど、コマンドとしては解釈されないので、ただ変数が展開された結果のdateが出力。
単一引用符の場合は中身が全て文字列として解釈されるので、中身の$DATEがそのまま文字列として出力される。
バッククォーテーションの場合は変数が展開⇒変数の中身のdateが実行されて、実行結果が出力される。

実用1

/var/log/messagesの最近のログからerror行を見よう

対象ファイル

# ls -1tr /var/log/ | grep messages
messages.4.gz
messages.3.gz
messages.2.gz
messages.1
messages

これだと.gzファイルが入っててめんどいので、圧縮前のmessages(現行)とmessages.1(一世代前)を対象にしてみる。

# ls -1tr /var/log/ | grep messages | tail -2
messages.1
messages

おk

①パイプで渡す
/var/log配下一覧表示→messagesが入ってるのを抜き出す→最後の2行(圧縮前のファイル)を抜き出す
→xargsでcatに渡す→errでgrep(-iなので大文字小文字両方引っかかる)

# cd /var/log/
# ls -1tr | grep messages | tail -2 | xargs cat | grep -i 'err'
Feb 20 03:40:48 debian kernel: [3258971.032714] hrtimer: interrupt took 19122757 ns
Feb 24 11:51:50 debian kernel: [3634205.930279] xfs: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.932033] xfs: Unknown symbol posix_acl_update_mode (err 0)
Feb 24 11:51:50 debian kernel: [3634205.939188] jfs: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.939595] jfs: Unknown symbol posix_acl_update_mode (err 0)
Feb 24 11:51:50 debian kernel: [3634205.948860] fat: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.950338] fat: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.953980] ntfs: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.956213] minix: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.958425] hfs: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.960883] hfsplus: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.964232] ufs: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.969289] btrfs: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.969787] btrfs: Unknown symbol posix_acl_update_mode (err 0)
Feb 24 11:55:46 debian kernel: [ 3.199508] ACPI: Using IOAPIC for interrupt routing
Feb 24 11:55:46 debian kernel: [ 3.409457] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 *9 10 11 14 15)
Feb 24 11:55:46 debian kernel: [ 3.409526] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 9 10 *11 14 15)
Feb 24 11:55:46 debian kernel: [ 3.409591] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 9 *10 11 14 15)
Feb 24 11:55:46 debian kernel: [ 3.409654] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 *7 9 10 11 14 15)
Feb 24 11:55:46 debian kernel: [ 3.862607] pcieport 0000:00:15.0: Signaling PME through PCIe PME interrupt
Feb 24 11:55:46 debian kernel: [ 3.862716] pcieport 0000:00:15.1: Signaling PME through PCIe PME interrupt
~~省略~~

 

errだけじゃなくてInt「err」uptとかも引っかかってる。

抜くならgrep -iv 'interrupt'とか重ねれば良いんだけど、そうするとinterruptとerrと両方含まれる行も弾かれる・・・


grepの引数に``でくくったコマンドをせっと

# grep -i 'err' `ls -1tr | grep messages | tail -2`
messages:Feb 20 03:40:48 debian kernel: [3258971.032714] hrtimer: interrupt took 19122757 ns
messages:Feb 24 11:51:50 debian kernel: [3634205.930279] xfs: Unknown symbol setattr_prepare (err 0)
messages:Feb 24 11:51:50 debian kernel: [3634205.932033] xfs: Unknown symbol posix_acl_update_mode (err 0)
messages:Feb 24 11:51:50 debian kernel: [3634205.939188] jfs: Unknown symbol setattr_prepare (err 0)
messages:Feb 24 11:51:50 debian kernel: [3634205.939595] jfs: Unknown symbol posix_acl_update_mode (err 0)
messages:Feb 24 11:51:50 debian kernel: [3634205.948860] fat: Unknown symbol setattr_prepare (err 0)
messages:Feb 24 11:51:50 debian kernel: [3634205.950338] fat: Unknown symbol setattr_prepare (err 0)
messages:Feb 24 11:51:50 debian kernel: [3634205.953980] ntfs: Unknown symbol setattr_prepare (err 0)
messages:Feb 24 11:51:50 debian kernel: [3634205.956213] minix: Unknown symbol setattr_prepare (err 0)
messages:Feb 24 11:51:50 debian kernel: [3634205.958425] hfs: Unknown symbol setattr_prepare (err 0)
messages:Feb 24 11:51:50 debian kernel: [3634205.960883] hfsplus: Unknown symbol setattr_prepare (err 0)
messages:Feb 24 11:51:50 debian kernel: [3634205.964232] ufs: Unknown symbol setattr_prepare (err 0)
messages:Feb 24 11:51:50 debian kernel: [3634205.969289] btrfs: Unknown symbol setattr_prepare (err 0)
messages:Feb 24 11:51:50 debian kernel: [3634205.969787] btrfs: Unknown symbol posix_acl_update_mode (err 0)
messages:Feb 24 11:55:46 debian kernel: [ 3.199508] ACPI: Using IOAPIC for interrupt routing
messages:Feb 24 11:55:46 debian kernel: [ 3.409457] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 *9 10 11 14 15)
messages:Feb 24 11:55:46 debian kernel: [ 3.409526] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 9 10 *11 14 15)
messages:Feb 24 11:55:46 debian kernel: [ 3.409591] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 9 *10 11 14 15)
messages:Feb 24 11:55:46 debian kernel: [ 3.409654] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 *7 9 10 11 14 15)

~~省略~~

いきなりgrepするので、1カラム目にファイル名が出力される。

後の結果は同じ。

``の中のコマンドは展開されて実行されるので、
ls -1tr | grep messages | tail -2の結果がgrep -i 'err'の引数として渡される。

grep -i 'err' messages.1 messages
とおなじになっているはず。

ちなみに-hをつけると先頭カラムのファイル名が出力されない。

# grep -ih 'err' `ls -1tr | grep messages | tail -2`
Feb 20 03:40:48 debian kernel: [3258971.032714] hrtimer: interrupt took 19122757 ns
Feb 24 11:51:50 debian kernel: [3634205.930279] xfs: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.932033] xfs: Unknown symbol posix_acl_update_mode (err 0)
Feb 24 11:51:50 debian kernel: [3634205.939188] jfs: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.939595] jfs: Unknown symbol posix_acl_update_mode (err 0)
Feb 24 11:51:50 debian kernel: [3634205.948860] fat: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.950338] fat: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.953980] ntfs: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.956213] minix: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.958425] hfs: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.960883] hfsplus: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.964232] ufs: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.969289] btrfs: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.969787] btrfs: Unknown symbol posix_acl_update_mode (err 0)
Feb 24 11:55:46 debian kernel: [ 3.199508] ACPI: Using IOAPIC for interrupt routing


実用2

ファイル名に日付を付けたい

$ date +%Y%m%d
20170224
$ touch test`date +%Y%m%d`
$ ls
test20170224

 

$ tar cvzf ./backup/files_`date +%Y%m%d`.tar.gz files

$ ls backup/
files_20170224.tar.gz

今いるディレクトリ内のfilesフォルダをtarでアーカイブ&圧縮。

圧縮ファイル名をfiles_日付.tar.gzで固める。

``で囲った中のdateコマンドがオプション付きで実行されて、files_の後ろにくっつく。

Linuxコマンドを学んでいこう(基礎その2 システムの状況とか)

システムの状況とかを調べたりする

システムの状況とか構成とかを調べたりするコマンド。
謎システムのときに手掛かりを得たり、なにかトラブルが起きたときに状況を把握するのに役立つものたち。

今入っているシステムを調べる

uname

そのそもOSの種類やバージョンが判らなかったりするときに使ったりする。

オプションは
-a --all すべての情報
-m --machine CPUの種類(x64 or i386)
-n --nodename ネットワーク上のホスト名
-r --releaase OSのリリース番号
-s --sysname OSの名称
-v OSのバージョン

実行例

$ uname -a
Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u2 (2016-10-19) x86_64 GNU/Linux

 -a で全ての情報を表示したとき。

 

OSの種類 ホスト名 リリース バージョン(コンパイル日時) CPUの種類 GNU/Linux
の順で並んでいる。最後のGNU/Linuxはあまり気にしないでよい。
OSの種類といっても、ここではLinuxとしかでない。デストリビューション出ると思ったらはずれ。
ハードウェア情報と言ってもここではCPUが32bit or 64bitしかでない。残念。
リリース番号はカーネルのバージョン。

よって、このコマンドで得られる情報はごく基本的なもの。
そもそも入っているシステムがLinuxなのかSoralisなのか、他の何かなのかっていうときに使うと幸せになれる。

cat /etc hoge-release

コマンドに挙げていいものか謎だけど、unameにて調べたはいいが、
デストリビューションとそのバージョンが判らないと何にもできないじゃん!!というときに使う。

/etc/配下にhoge-releaseというファイルがあるので、これをcatなりなんなりで見ればわかる。

実行例

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

この場合はCentOS 6.8であることがわかる。
上記unameの情報と合わせると、CentOS release 6.7 x86_64 と判明。
するとパッケージなんかはCentOS6系のamd64用を使えばよいことが判る。

ちなみにhoge-releaseはデストリビューションによって-が_だったりするので適宜。

Debianの場合

$ cat /etc/debian_version
8.7

この場合Debian8.7。

プロセスを調べる

ps

動作中のプロセスを表示する。
オプションには-付けるものと付けないもの、付けると意味が変わるものがあるので注意が必要。

オプション
a 自分以外のユーザーのプロセスを表示する
u ユーザー名表示
x 制御端末のないプロセスも表示する
f 親子関係をツリー上に表示する
-e すべてのプロセスを表示する
-f 完全フォーマットで表示する
-w 長い行は折り返して表示
w 1行追加して表示を拡大する。wを増やすことによって行数をさらに増やせる

良く使うのは
aux(すべてのユーザー、ユーザー名表示、制御端末無いプロセス(デーモンなど)も表示)
-ef すべてのプロセスを完全フォーマットで表示

auxfで親子関係を表示することもある。ちなみに-を付けないオプションが推奨されているらしい。

全プロセス表示すると量的に大変なことになるので、パイプでgrepに渡すことが多い。

実行例

$ ps auxf | grep "apache" | grep -v "grep"
root 11400 0.0 2.2 251100 22640 ? Ss Feb11 0:27 /usr/sbin/apache2 -k start
www-data 71076 0.0 3.1 255476 32144 ? S 07:35 0:00 \_ /usr/sbin/apache2 -k start
www-data 71077 0.0 4.8 269112 48868 ? S 07:35 0:00 \_ /usr/sbin/apache2 -k start
www-data 71079 0.0 4.3 266488 44220 ? S 07:35 0:01 \_ /usr/sbin/apache2 -k start
www-data 71080 0.0 3.4 255536 34604 ? S 07:35 0:00 \_ /usr/sbin/apache2 -k start
www-data 72322 0.0 3.7 260152 38284 ? S 08:12 0:00 \_ /usr/sbin/apache2 -k start
www-data 72325 0.0 1.4 252776 14932 ? S 08:12 0:00 \_ /usr/sbin/apache2 -k start
www-data 72327 0.0 0.8 251124 8688 ? S 08:12 0:00 \_ /usr/sbin/apache2 -k start
www-data 72328 0.0 3.4 256548 35352 ? S 08:12 0:00 \_ /usr/sbin/apache2 -k start
www-data 72329 0.0 3.5 256604 36372 ? S 08:12 0:00 \_ /usr/sbin/apache2 -k start
www-data 72330 0.0 3.3 255536 33808 ? S 08:12 0:00 \_ /usr/sbin/apache2 -k start

出力されている情報の並びは
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

$ ps -ef | grep "php" | grep -v "grep"
root 11019 1 0 Feb11 ? 00:00:30 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
www-data 11021 11019 0 Feb11 ? 00:00:00 php-fpm: pool www
www-data 11022 11019 0 Feb11 ? 00:00:00 php-fpm: pool www

 同じく情報は

UID PID PPID C STIME TTY TIME COMMAND


top

実行中のプロセスを継続的に監視する。
システムの負荷状況、プロセス・メモリ・スワップ・CPUの統計情報が得られ、
かつデフォルトで5秒ごとに最新情報に更新される。
psがプロセスを調べるのに特化しているのに対し、こちらはシステム状況を把握・監視するのによく使う。

実行例

$ top

top - 00:19:38 up 66 days, 14:30, 3 users, load average: 0.06, 0.09, 0.08
Tasks: 300 total, 1 running, 299 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3%us, 0.1%sy, 0.0%ni, 99.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 2773648k total, 2332076k used, 441572k free, 145776k buffers
Swap: 2916348k total, 391080k used, 2525268k free, 804756k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3718 tmin 20 0 1561m 282m 31m S 1.3 10.4 4350:01 firefox
12457 tmin 20 0 15164 1404 936 R 0.3 0.1 0:00.02 top
1 root 20 0 19352 1188 1000 S 0.0 0.0 0:00.92 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:12.17 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 6:52.21 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/0
6 root RT 0 0 0 0 S 0.0 0.0 0:04.26 watchdog/0
7 root RT 0 0 0 0 S 0.0 0.0 0:19.38 migration/1
(以下省略)

 

1行目

top - 00:19:38 up 66 days, 14:30, 3 users, load average: 0.06, 0.09, 0.08

現在時刻 稼働時間 ログインユーザー数 ロードアベレージ(実行待ちジョブの平均 1分前 5分前 15分前)

 

2行目

Tasks: 300 total, 1 running, 299 sleeping, 0 stopped, 0 zombie

タスクの合計数 稼働中のタスク数 待機中のタスク数 停止タスク数 ゾンビタスク数

 

3行目

Cpu(s): 0.3%us, 0.1%sy, 0.0%ni, 99.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

CPUの利用時間
us ユーザー sy システム ni 優先度変更したの id アイドル wa I/O終了待ち hi ハードウェア割り込み要求 si ソフトウェア割り込み要求
st ゲストOSが割り当て要求したけど割り当ててもらえなかった

 

4行目

Mem: 2773648k total, 2332076k used, 441572k free, 145776k buffers

メモリ。
合計メモリ 利用メモリ 空きメモリ 利用メモリの内バッファ利用してるメモリ

 

5行目

Swap: 2916348k total, 391080k used, 2525268k free, 804756k cached

スワップ
合計スワップ 利用スワップ 空きスワップ キャッシュしてるスワップ

 

7行目 8行目以下の説明。
8行目以下 実行されているプロセスが(デフォルトでは)CPUをより多く使用している順に並ぶ。

立ち上げると(デフォルトでは)5秒ごとに更新して表示し続けるので、終了はqかCtrl+Cで止める。

free

メモリの利用状況を調べる。デフォルトではKB単位。

オプション
-m MB単位で表示
-s 秒 指定した感覚で表示し続ける。

実行例

$ free
total used free shared buffers cached
Mem: 2773756 2132416 641340 34424 49736 204928
-/+ buffers/cache: 1877752 896004
Swap: 2916348 508784 2407564

Mem:メモリの使用状況
Swap:スワップの使用状況
buffersとcachedはOSによって予約されている領域。buffersおよびcacheは、メモリが不足する場合に開放して利用できるようにする。
よって、実質的なメモリの使用量および利用可能量を見るためには、2行目の-/+ buffers/cache行を見るのが正しい。

top,freeによるメモリ状況の見方については一昔前から議論があり、
主には「十分なメモリを積んでいるはずなのにSwapを使用している!!メモリが足りないのか!?」というものだ。
実際の所、この「実質的なメモリの使用量および利用可能量」ではなく一行目のfreeの値だけを見ているか、
活動が少ない部分をメモリから排除して swap に追い出し, バッファやキャッシュに転用するというカーネルの動作を誤って解釈していることによる。

ただし、実際Swapへのアクセスが頻発している時にはメモリ不足(この原因は搭載メモリが足りない・何らかのメモリリークが起きているなど別の切り分けが必要)
の可能性が高い為、何らかの対策が必要かもしれない。(この辺は深入りしないほうが幸せだと思う)

vmstat

モリーやCPUの負荷率や使用状況を表示する

$ vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 508764 637284 51256 206644 1 0 7 11 4 4 3 1 97 0 0

si(スワップイン), so(スワップアウト)が頻繁に起きている場合はメモリ不足が疑われる。

システムの搭載メモリが不足しているか、メモリリークが起きていないかといったことを調べるには、
一つのコマンド結果ではなく、各コマンドの特徴を把握して複数の角度から考えることが必要だったりする。

uptime

稼働時間とload average。topコマンドの一行目とほぼ同じ。

$ uptime
00:20:59 up 37 days, 13:31, 3 users, load average: 0.00, 0.08, 0.12

 

障害等発生時にこの辺で現状確認ができるかもしれない。
ある程度切り分けできたら詳細ログ調査などに入ることもままある。


topで負荷状況・再起動有無等確認⇒psでプロセスの死活・再起動有無の確認⇒/var/log/messagesやその他のアプリログの確認、みたいな。

 

Sponsored Link