CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
こんにちは。加賀結衣(かが ゆい)と申します。
このコラムでは、株式会社リックテレコムの「Windows/Linuxのトラブル追跡実践ノウハウ」をもとに、私が実際にPCに触りながら学んだことをまとめていきます。
コラム内のページ表記は、この書籍のページを示します(Pはページです)。
日々発生するコンピュータのトラブルに対し、どのようなツールを使い、どのような情報を収集すればよいか知りたいと思われている初心者の方に、このコラムが少しでもお役に立てば嬉しいです。
今回は、第3章 「ログ、設定の調べ方」の「3.3 Linux編(ログ)の、3.3.5 ログファイルや設定ファイルを探す(p.139) 」を確認していきましょう。
----------------------------------------------------------------------
第3章 ログ、設定の調べ方
3.3 Linux編(ログ)
3.3.1 Linuxのディレクトリ構成について(p.133)
3.3.2 Linuxの主なログファイルについて(p.134)
3.3.3 Linuxの主な設定ファイルについて(p.137)
3.3.4 エラーログから調査の手がかりを探す(p.137)
3.3.5 ログファイルや設定ファイルを探す(p.139)
3.3.6 grepコマンドでログを検索する(p.143)
3.3.7 grepの正規表現を活用する(p.146)
3.3.8 grepと他のコマンドを組み合わせてログを調査する(p.148)
3.3.9 圧縮されたファイル内を検索する(p.154)
3.3.10 grepよりも高速なコマンドを導入する(p.155)
3.3.11 デバッグレベルを変更して詳細なログを取得する(p.155)
3.3.12 巨大なログを調べる(p.156)
3.3.13 リアルタイムにログを監視する(p.159)
----------------------------------------------------------------------
第3章 ログ、設定の調べ方
3.3 Linux編(ログ)
3.3.5 ログファイルや設定ファイルを探す(p.139)
調査対象のソフトウェアの状態確認のために設定ファイルやログファイルを確認する際、ファイルの場所がソフトウェアの種類等で異なるため、探すのに苦労することがあります。
そんなときに使えるログやコマンドは、以下となります。
■/etc、/var/log
/etcは、Windows でいうところの"Program Files"にあたり、また、/var/logにはログファイルが含まれるため、まずは各ディレクトリ内を探してみましょう。
■rsyslog.confでログの場所を確認する
rsyslog.confは /etc内にあり、 /var/logの各ログ出力を行っています。
このファイルを確認することで、ログファイルの出力先を確認することができます。
■find、lsof
findコマンドでは、ストレージ内のファイルやディレクトリを検索することができます。
以下では /etc内の rsyslogを検索しています。
find /etc -name rsyslog
また、lsofコマンドでは、プロセスが開いている(動作中の)ファイルからログファイルを調査することができ、プロセスが使用するポートやネットワークのマッピング情報についての調査に役立てることができます。
lsof -c プロセス名を指定すると、そのプロセスが開いているファイルを特定できます。
また、lsof -i:ポート番号を指定すると、そのポートで使用中のプロセスを確認できます。
各コマンドには様々なオプションがありますので、調査に使えそうなものを自分なりに調べておくとよいかもしれません。
参考情報
Linuxコマンド集
【 find 】 ファイルやディレクトリを検索する
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230777/
このポートで実行中のプロセスはどれ? lsofコマンドの使い方
http://www.atmarkit.co.jp/ait/articles/1510/05/news014.html
3.3.6 grepコマンドでログを検索する(p.143)
あるファイルから指定の文字列を検索したい場合は grep コマンドを利用します。
■grep
1.基本的な使い方
例えば、拡張子が.txt のファイル logfile.txt から"error"という文字列を検索したい場合、grep error logfile.txt のように指定します。
また、拡張子が.txt のファイルから"error"という文字列を検索したい場合、grep error *.txt のように指定できます。
2.大文字小文字を区別せずに出力させる
大文字小文字を区別せず、"error"、"ERROR"のいずれの文字も対象としたい場合は
-iオプションを付け、以下のように指定します。
grep -i error logfile.txt
3.AND検索
また、 error と 1111 両方を含んだ行を対象としたい場合(AND検索)は、パイプを利用して以下のように指定します。
grep error logfile.txt | grep 1111
パイプは、コマンドの実行結果を受けてそこから検索したい場合にも利用できます。
例えば以下のように指定しますと、コマンドの実行結果から errorを含む文字列を検索できます。
コマンド | grep error
4.OR検索
OR検索、つまり、複数の条件のうちいずれかに合うものを検索したい場合は
-eオプションを利用します。
以下では、logfile.txtから"error"、"info"のいずれかを含んだ行を検索できます。
grep -e error info logfile.txt
5.特定の文字列を含む行を除外する
ある文字列が含まれる行を除外したい場合は -vオプションを利用します。
以下では、logfile.txtから"info"を含んだ行のうち、"1111"を含まない行が表示されます。
grep info logfile.txt | grep -v 1111
6.検索に合致する行の前後の行も表示する
検索に合った行だけでなく、その前後の行も含めて表示したい場合は行数を指定します。
例えば、以下では、"error"を含む行とその前後2行が表示されます。
grep -2 error logfile.txt
7.検索に合致した行数を表示する
検索に合致した行数が知りたい場合には -c オプションを利用します。
grep -c error logfile.txt
8.検索対象ファイルを含むディレクトリ内にあるファイルを再帰的に検索する
-rオプションでは、ディレクトリ内にあるファイルをサブディレクトリも含め再帰的に検索できます。
grep -r error logs
参考情報
Linuxコマンド集
【 grep 】 文字列を検索する
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230786/
3.3.7 grepの正規表現を活用する(p.146)
grepの文字列パターンには正規表現が使用できます。正規表現とは、文字列のパターンを表現する表記法です。
例えば、^は行の先頭、$は行の最後を示しますが、grep -E 'a$' logfile.txtとしますと行の最後がaである行を検索することができます。
よく使われる正規表現の機能詳細は、P.146以下をご参照ください。
参考情報
Linuxコマンド逆引き大全
【 どのような正規表現があるのか 】
http://itpro.nikkeibp.co.jp/article/COLUMN/20060228/231171/
3.3.8 grepと他のコマンドを組み合わせてログを調査する(p.148)
■awk、sort、uniq
awkは、文字列の検索や置き換えなどに利用されるプログラム言語です。
例えば、awk '{ print $0 }' /etc/passwdで、/etc/passwd ファイルの各行を表示することが可能です。
また、sortは、行の並び替えをするコマンドです。
例えば、sort ファイル名で対象ファイルをソートし、sort -r ファイル名で対象ファイルを逆順にソートすることができます。
uniqは、ソートされたファイルから重複行を削除するコマンドです。
例えば、uniq test.txtで、test.txtファイルで重複した行を削除することができます。
それぞれにさまざまな使用方法があり、本書を合わせて以下などを確認しておくとよさそうです。
参考情報
共通テーマ: 実例でわかる awk: 第 1 回
http://www.ibm.com/developerworks/jp/linux/library/l-awk1/index.html
共通テーマ: 実例でわかる awk: 第 2 回
http://www.ibm.com/developerworks/jp/linux/library/l-awk2/index.html
共通テーマ: 実例でわかる awk: 第 3 回
http://www.ibm.com/developerworks/jp/linux/library/l-awk3/index.html
Linuxコマンド集
【 sort 】 行を並び替える
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230887/
Linuxコマンド集
【 uniq 】 ソート済みのファイルから重複した行を削除する
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230918/
3.3.9 圧縮されたファイル内を検索する(p.154)
■zgrep、zipgrep
zgrepコマンドを利用すると、圧縮ファイル内を、解凍せずに圧縮ファイルのまま検索することができます。
(.Zファイルと.gzファイルに対応)
zgrep error logfiles.txt
また、.zipファイルを対象にしたい場合は、zipgrepコマンドを利用しますと対象とすることができます。
3.3.10 grepよりも高速なコマンドを導入する(p.155)
■ag
agコマンドを利用すると、grepよりも高速に検索が可能です。
例えば以下では、etc/passwdファイル内からキーワード「root」を含む行を表示できます。
agコマンドは、一般にgrepよりも高速とされているackコマンドよりさらに3から5倍の速度で検索できます。
ag root etc/passwd
3.3.11 デバッグレベルを変更して詳細なログを取得する(p.155)
■/etc/rsyslog.conf
3.3.12 巨大なログを調べる(p.156)
■head、tail、split
headコマンドではファイルの最初の部分を、tailコマンドではファイルの最後の部分を表示することができます。
また、-nオプションで行数を指定すると、その行数分の表示が可能です。
headコマンド及びtailコマンドでは、デフォルトで10行を表示しますが、例えば以下のように指定すると、最初の30行分を表示させることができます。
head -30 /var/log/messages
また、splitコマンドでは、巨大なファイルを分割することができます。
例えば、-lオプションで以下のように指定してある行数ごとにファイルを分割することができます。
split -l 100 big_file.txt
3.3.13 リアルタイムにログを監視する(p.159)
■tail、tee
tailコマンドでは、-nオプションで行数を指定して最後尾の数行を表示できます。
-fオプションでは、新しく追記される行を逐次出力することが可能です。
tail -f /var/log/syslog
また、teeコマンドを利用すると、標準出力からのデータを標準出力しつつ、ファイル出力を行うことができます。
$ echo "Hello,World!" | tee file.txt
★あるファイルから指定の文字列を検索したい場合は grep コマンドを利用します。
★その他、head、tail、splitなどを含め様々なコマンドを活用して調査を効率的に進めていきましょう。
なお、ネットワーク・サーバ(OS)分野における原因究明の仕方や切り分けなどを行う方法を基礎から学びたい方には、CTC教育サービスのオリジナルコースである
「システムトラブルシュート(ファーストステップ)」
「システムトラブルシュート(ネクストステップ)」がお勧めです。
最後まで読んでくださってどうもありがとうございました。次回もどうぞお楽しみに。
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes