2017-05-17 9 views
0

私のウェブサイトのアクセスログからライブ出力を見たい。私は、この場合、 ".php"にマッチするエントリーのcertailタイプだけを見たいと思っています。Linux tail + grep + less

これは正常に動作しますが、行は次の行に折り返すと、私はそれを望んでいない:

tail -f access-log | fgrep ".php" --line-buffered 

これは、行の折り返しを回避するために正常に動作しますが、それはフィルタリングされません。

less +F -S access-log 

出力の構造がわかりやすいので、次の行に改行しないでファイルを調べるほうが好きです。これは私がless -Sのために必要なものです。

この種の機能はありますが、「カーソル」はファイルの最下部にとどまりません。入力するコマンドはlessです(ストリームが到着すると下部にとどまるために「SHIFT + F」を押します) :

tail -f access-log | fgrep ".php" --line-buffered | less -S 

しかし、これがすべてでは動作しません:

tail -f access-log | fgrep ".php" --line-buffered | less +F -S 

だから、私が欲しいものを達成する方法はありますか?

私はまた、sedで切断して、各行が決して自分の画面よりも長くならないように、外部のソリューションを利用しますか?私が提案するのbashで

watch -n1 tail access-log | fgrep ".php" --line-buffered

+2

は、プログラミングに関する質問であり、Linuxの使用または設定に関する質問ではありません。 SuperUser.comまたはunix.stackexchange.comは、このような質問のためのより良い場所になります。 – Barmar

+0

ごめんなさい、これはスクリプトのように見え、Linuxの設定に似ていないと思った。私はPHPや他の言語で同じことを達成することができました –

+0

これは設定ではなく、コマンドラインツールの通常の使用です。確かに複雑なコマンドラインとスクリプトの間にはあいまいな線があります。しかし、良い経験則(IMO)は、変数を持たない1ライナーであれば、実際にはスクリプトではないということです。 – Barmar

答えて

1

tail -f access-log | fgrep ".php" --line-buffered | cut -c 1-$COLUMNS 
+0

完璧、ありがとうございました:)...しかし、方法があればかなり良いでしょう仕事を少なくするために、出力を保存したり、スクロールアップしたい場合はどうしたらよいでしょうか –

0

watchコマンドを使用することを検討してください他の機能も好きではないので、私はこれを行うことができます:

tail -f access-log | fgrep ".php" --line-buffered >> tmp.access-log 

そして次に

less -S +F tmp.access-log 

私はちょうどそれを削除するには、そのtmpファイルを必要としない場合、私は、行っています。

+0

あなたはこれが何をしているのか教えていただけますか?私はファイルのサイズの変化を監視する必要がある 'ls -hal'のようなものを監視していただけです。 –

0

私はすでに私の場合のために受け入れ答えを使用し、私は私が実際に使用したい場合は推測

関連する問題