ファイルの中身を見る
数十万行のログを全部表示させて、端末が固まる
サーバーに入って最初にやることは、たいてい設定ファイルかログを読むことです。ところが本番のログは数十万行あることが珍しくなく、何も考えずに全部を画面へ流すと、延々とスクロールが続いて操作を受け付けなくなります。
読み方を 3 つに分けておくと、これが起きません。全部見る、端だけ見る、ページをめくって見る、の 3 つです。
全部見るか、端だけ見るか
ターミナル
cat /etc/hostname
# web-01cat はファイルの中身をそのまま流します。短いと分かっているファイル向けです。
ターミナル
head -n 5 /etc/services
# # Network services, Internet style
# #
# tcpmux 1/tcp
# echo 7/tcp
# discard 9/tcphead は先頭だけを取り出します。-n の後ろの数字が行数です。どんな形式のファイルなのか見当をつけたいだけなら、これで足ります。
ターミナル
tail -n 3 /var/log/syslogtail は末尾を取り出します。ログは新しい行が末尾に足されていくので、「今どうなっているか」を知りたいときはこちらです。
何行あるのかだけ知りたいときは wc -l ファイル名 を使います。行数が分かれば、そのまま全部表示させてよいかどうかの判断がつきます。
長いものはページをめくって読む
ターミナル
less /var/log/syslogless はファイルを開いたまま、スペースキーで次のページへ進みます。q を押すと閉じて元の画面に戻ります。行数の見当がつかないファイルを開くときは、こちらの方が安全です。
書き込まれる様子をそのまま追いかけたいときは tail -f ファイル名 です。新しい行が増えるたびに画面へ流れてくるので、デプロイ直後の様子を見張るのに向いています。止めるときは Ctrl+C です。
サイズが分からないファイルは、まず
headで先頭を見る。中身の形が分かってから、全部読むか端だけ読むかを決める。この順番を守るだけで、端末を固める事故はほぼ無くなります。
課題
- 5 行のファイルを作る
- head と tail を両方使う