質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

4回答

50044閲覧

サーバのログを確認するときに、catやlessはNG?

rikishi

総合スコア48

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

10クリップ

投稿2014/10/02 10:51

サーバのログを確認する時に、
「catやlessはテキストを全部読み込んでしまい余計なサーバリソースを使うからheadやtailで削って確認して」
と指示されたのですが、そういうものなのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

たしかに cat を工夫せず大きいファイルに使うと、たまに痛い目に遭います。
ファイルを全部読み込む負担だけでなく、そのままではコンソールに丸ごと吐き出すので、そちらの負担が問題になりやすいです。
cat は他のコマンドとの連携でなければ、あんまり使いどころはないと思います。

しかし less はお勧めです。
大きいファイルを開いても、ファイル全体を読み込むことはありません。出力量もコンソールのサイズに限定されます。

確認(閲覧)目的で head や tail を使っても、一発で適切な結果が得られるとは限りません。
less なら必要なだけスクロールして、想定外の状況なら任意で終了(小文字の q)させることもできますので、むしろ安全です。

さすがに行番号指定や単語検索を行うと head/tail 以上の負担にはなりますが、類似のコマンドと(grep や wc) に比べれば大差ありませんし、必要を感じてから実行でき、実行結果に応じて次操作をできる点で優位です。

小難しい話はさておき、とりあえず以下だけ覚えとけば、それなりに使えるかと思います。

head の代わりは

  less ファイルのパス

tail の代わりは、上記のコマンドのあと以下をタイプ

  G ※Shift+g

特定行への移動は

  :行番号

grep の代わりは、less で開いたあと

  /検索したい単語 ※先頭に半角スラッシュ。特殊文字の扱いなどはマニュアルを参照

画面外の行にスクロールしたければ

  下=j 上=k

終了するときは

  q

操作ミスって訳が分からなくなったときは

  ctrl+c や q を連打

投稿2014/10/05 16:44

morizo229

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

ログファイルが 10万行 あったとします。その 9万行目に 問題となるログが出力されていたとします。
それを cat ,less で見ても 問題発生箇所の行を見つけだすのはほとんど 無理ゲー です。

grep で 絞り込み (時間や キーワードで) をしてから、その行付近の前後を見るという風にしないと。

500 行ほどのログですが、そのログから 特定箇所を表示させる操作例を示してみます。

$ wc /usr/local/var/apache2/log/error_log 541 5443 56385 /usr/local/var/apache2/log/error_log

ログが 541 行あることがわかります。
ここでは エラー の行を探すことにします。(Error とか error を含む行)

$ grep -i error /usr/local/var/apache2/log/error_log | wc 108 1298 12807

108 行がヒットしました。
ヒットした行の後ろ 10 行 を見てみます。行番号を合わせ表示させています。

$ grep -i -n error /usr/local/var/apache2/log/error_log | tail 435:App 97559 stdout: Error loading ~/.pryrc: cannot load such file -- hirb 444:App 97559 stdout: 13: result = catch(PG::Error) do 457:App 97592 stdout: Error loading ~/.pryrc: cannot load such file -- hirb 465:App 97592 stdout: 13: result = catch(PG::Error) do 478:App 97645 stdout: Error loading ~/.pryrc: cannot load such file -- hirb 486:App 97645 stdout: 13: result = catch(PG::Error) do 499:App 97651 stdout: Error loading ~/.pryrc: cannot load such file -- hirb 507:App 97651 stdout: 13: result = catch(PG::Error) do 520:App 97661 stdout: Error loading ~/.pryrc: cannot load such file -- hirb 528:App 97661 stdout: 13: result = catch(PG::Error) do

499 行目付近 (495 行目 から 10 行分) を見ることにします。

$ tail -n +495 /usr/local/var/apache2/log/error_log | head App 97645 stdout: 22: end App 97645 stdout: App 97645 stdout: [1] pry(#<MyMiddleware>)> App 97651 stdout: App 97651 stdout: Error loading ~/.pryrc: cannot load such file -- hirb App 97651 stdout: /Users/katoy/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require' App 97651 stdout: App 97651 stdout: App 97651 stdout: From: /Users/katoy/github/apas/ServiceCenter/app/middlewares/my_middleware.rb @ line 12 MyMiddleware#call: App 97651 stdout:

投稿2014/10/05 01:07

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

catはまずい気がします。
lessはわかりません。
私は対象のファイルを、tail | head |grepのようにして確認してます。
#必要であれば**「more」「view -」**なども。

投稿2014/10/03 02:30

oyabun

総合スコア32

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

lessはファイル全体はいきなり読まないはずなので、普通のエディタと比べれば負荷は低いと思います。

投稿2014/10/03 05:52

TaMaMhyu

総合スコア1356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問