私はインフラ系は得意ジャンルではないので、いままで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 -vやapachctl -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/uploads、wp-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-host02~server-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サービスがトラブった時やアプリケーションのデプロイをする時などに困らないかと。