私はインフラ系は得意ジャンルではないので、いままでWEBサイトがトラブった時などは、インフラエンジニアの人によく「こういうこと調べたいんだけど…」と色々と聞いて教えてもらったコマンドを自分用のチートシートにまとめていた。何気にこれが今でも重宝していて、今回はそれらのコンソールコマンドを体系化して備忘録としてまとめてみた。
今後はこのページをブックマークしておけば、何かと役に立つかなぁ…と。


環境情報確認系

ログインしている自ホストのGIPを確認する

$ wget -q -O - ipcheck.ieserver.net;echo

CentOSのバージョン確認方法

$ uname -a
Linux {HOST_NAME} 2.6.32-220.7.1.el6.x86_64 #1 SMP Wed Mar 7 00:52:02 GMT 2012 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/redhat-release
CentOS release 6.5 (Final)

Apacheのバージョン確認方法

$ /usr/sbin/httpd -v
Server version: Apache/2.2.15 (Unix)
Server built:   Aug 13 2013 17:29:28

※ パスが通っていれば、単にhttpd -vapachctl -vでもOK

PHPのバージョン確認方法

$ php -v
PHP 5.4.16 (cli) (built: Jun  5 2013 17:33:21)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

CPUコア数の確認

$ cat /proc/cpuinfo

もしくは、

$ top

topでサーバのリアルタイム状況が表示された後に1を押すとcpu0、cpu1みたいにコア数がわかる。

メモリの確認

$ free -g

もしくは、

$ cat /proc/meminfo

ストレージ領域のディスク容量一覧確認

$ df -h

※ マウントポジションの確認にも使えます。

RPMパッケージ一覧を確認する

$ rpm -qa | sort

yumでインストールしたパッケージ一覧を確認する

$ yum list installed | sort

指定パスの使用ファイルサイズを表示する

$ du -sh /var/lib/*

s3fsのバージョン確認方法

$ s3fs --version
Amazon Simple Storage Service File System 1.77
Copyright (C) 2010 Randy Rizun <rrizun@gmail.com>
License GPL2: GNU GPL version 2 <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

※ ストレージとしてAWSのS3を利用している場合に、ストレージディレクトリのマウントにs3fsを使っている時のみ。


ファイル操作系

特定ファイルを除外してtarファイルに固める

$ tar cvf wordpress_wp-content.tar ./wp-content --exclude uploads

※ 1ファイル/1ディレクトリにつき--excludeのオプションが必要。

複数の除外ファイル(ディレクトリ)を記述したファイルを指定してtarファイルに固める

$ echo uploads  > exclude 
$ echo cache >> exclude
$ tar cvf wordpress_wp-content.tar ./wp-content -X exclude

※ 上の例は、wp-content/uploadswp-content/cache以外のwp-contentディレクトリをtarで固める処理。

tarファイルに固めながら、gzip圧縮形式に圧縮する

$ tar zcvf backup.tar.gz file1 file2

gzip圧縮されたtarファイルを一気に解凍する

$ gzip -dc  /tmp/filename.tar.gz | tar xvf -

もしくは、

$ tar zxvf /tmp/filename.tar.gz

tarコマンドのzオプションが簡単で使い勝手が良い。

他サーバのファイルとの差分を確認する

$ ssh user@server-hostname "cat /var/www/html/wp-config.php" | diff - wp-config.php

複数サーバへファイルを配布する

$ for i in server-host0{2..6}; do scp /var/www/html/maintenance.html ${i}:/var/www/html/. ; done

※ 上記の例は、server-host02server-host06までの5台のサーバへ自ホストのmaintenance.htmlをコピーします。ただし、各サーバへホスト名でSSHが出来るように事前にHOSTSを書いておく必要があるので注意。


検索系

複数のログファイルをgrepして、ヒットした件数をカウントする

$ for i in `seq 1 9`;do count=`cat error_log.2014020$i | grep 'Digest' | grep -v 'referer: http://*.*/wp-admin/' |wc -l`;echo "2014020$i : $count";done
$ for i in `seq 10 25`;do count=`cat error_log.201402$i | grep 'Digest' | grep -v 'referer: http://*.*/wp-admin/' |wc -l`;echo "201402$i : $count";done

grep|(パイプ)で繋げるとAND条件になる。かつ、grep -vで除外条件を指定している。

grepで行数をカウントする

$ grep 'xxxx' filename | wc -l

grepで特定日時のログを抽出する

$ less access_log | grep -E '23/Jan/2013:12:([31-42])'

※ 上記の例は、アクセスログから「1/23 12:31~12:42」の間のログのみを抜き出して表示する。

「***」という記述を含むファイルを/var/www/html/以下から探す

$ find /var/www/html |xargs grep -l *** /dev/null

もしくは、

$ find /var/www/html -print0 |xargs -0 grep -l *** /dev/null

最低限、これぐらい知っておくと、WEBサービスがトラブった時やアプリケーションのデプロイをする時などに困らないかと。