私は別のログを見ています
tail -q -f /var/log/syslog -f /var/log/fail2ban.log -f /var/log/nginx/error.log
各ログの出力に異なる色を付けるにはどうすればよいですか?
色付けにGNU grep
を使用:
color() { GREP_COLOR=$1 grep --color '.*'; }
(tail -qf /var/log/syslog | color 31 &
tail -qf /var/log/fail2ban.log | color 32 &
tail -qf /var/log/nginx/error.log | color 33)
最初の2つはバックグラウンドで開始されることに注意してください。つまり、あなたが押しても殺されないということです Ctrl-C (シェルは非同期ジョブのSIGINTを明示的に無視します)。
これを防ぐには、代わりに次のようにします。
color() { GREP_COLOR=$1 grep --line-buffered --color=always '.*'; }
(tail -qf /var/log/syslog | color 31 &
tail -qf /var/log/fail2ban.log | color 32 &
tail -qf /var/log/nginx/error.log | color 33) | cat
そのように、 Ctrl-C、 最後 tail+grep
およびcat
ダイ(SIGINTの)と他の2つのgrep + tailsは、次に何かを書き込むときにSIGPIPEでダイします。
または、SIGINTハンドラーを復元します(すべてのシェルでは機能しません)。
color() { GREP_COLOR=$1 grep --color '.*'; }
((trap - INT; tail -qf /var/log/syslog | color 31) &
(trap - INT; tail -qf /var/log/fail2ban.log | color 32) &
tail -qf /var/log/nginx/error.log | color 33)
color
関数でも実行できます。これはtail
には当てはまりませんが、tail
が死んだ場合、次に書き込むときにgrep
はSIGPIPEで死ぬことになります。
color() (trap - INT; GREP_COLOR=$1 exec grep --color '.*')
(tail -qf /var/log/syslog | color 31 &
tail -qf /var/log/fail2ban.log | color 32 &
tail -qf /var/log/nginx/error.log | color 33)
または、tail + grep全体を関数にします。
tailc() (trap - INT; export GREP_COLOR="$1"; shift; tail -qf -- "$@" |
grep --color '.*')
tailc 31 /var/log/syslog &
tailc 32 /var/log/syslog &
tailc 33 /var/log/nginx/error.log
または全体:
tailc() (
while [ "$#" -ge 2 ]; do
(trap - INT; tail -f -- "$2" | GREP_COLOR=$1 grep --color '.*') &
shift 2
done
wait
)
tailc 31 /var/log/syslog 32 /var/log/syslog 33 /var/log/nginx/error.log
このようなことは私にとってうまくいきました:
(tail -f /var/log/syslog | awk -W interactive '{printf "\033[1;31m%s\033[0m\n", $0}' & \
tail -f /var/log/auth.log | awk -W interactive '{printf "\033[1;32m%s\033[0m\n", $0}' & \
tail -f /var/log/Xorg.0.log | awk -W interactive '{printf "\033[1;34m%s\033[0m\n", $0}')
説明:
tail -f file
:ファイルが大きくなるにつれてデータを追加しますawk -W interactive
:awk
をインタラクティブモードに設定'{printf "\033[1;31m%s\033[0m\n", $0}'
出力をカラー化して端末に出力します。\033[1;31m
は赤を意味します\033[1;32m
は緑を意味します\033[1;34m
は青を意味します