Farklı günlükler izliyorum
tail -q -f /var/log/syslog -f /var/log/fail2ban.log -f /var/log/nginx/error.log
Her günlüğün çıktısını nasıl farklı renklendirebilirim?
multitail
bu soruya bir göz atacağım ve cevaplarım
Farklı günlükler izliyorum
tail -q -f /var/log/syslog -f /var/log/fail2ban.log -f /var/log/nginx/error.log
Her günlüğün çıktısını nasıl farklı renklendirebilirim?
multitail
bu soruya bir göz atacağım ve cevaplarım
Yanıtlar:
grep
Renklendirme için GNU kullanma :
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)
İlk 2'nin arka planda başlatıldığını unutmayın. Bu, tuşuna basarsanız öldürülmeyecekleri anlamına gelir Ctrl-C(kabuk, eşzamansız işler için SIGINT'i açıkça yoksay).
Bunu önlemek için şunları yapabilirsiniz:
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
Bu şekilde, Ctrl-Cson olarak tail+grep
ve cat
(SIGINT'in) ölümü ve diğer iki grep + kuyruğu, bir daha bir şeyler yazdıklarında bir SIGPIPE'den öleceklerdir.
Veya SIGINT işleyicisini geri yükleyin (tüm kabuklarla çalışmaz):
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)
Bunu color
işlevde de yapabilirsiniz . Bu geçerli olmayacak tail
, ama tail
bir dahaki sefere grep
ölürse bir SIGPIPE'den ölecektir .
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)
Veya tüm kuyruğu + grep'i bir işlev haline getirin:
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
Veya her şey:
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
tailc
en iyi çalışan ve senaryoda en sezgisel görünen fonksiyona gittim .
Böyle bir şey benim için çalıştı:
(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}')
Açıklama:
tail -f file
: dosya büyüdükçe veri eklemeawk -W interactive
: awk
etkileşimli moda ayarla'{printf "\033[1;31m%s\033[0m\n", $0}'
terminale renklendirilmiş çıktıyı yazdırır.\033[1;31m
kırmızı anlamına gelir\033[1;32m
yeşil anlamına gelir\033[1;34m
mavi anlamına gelir-W interactive
mawk
-belirli görünüyor . ( mawk
girişini varsayılan olarak arabelleğe alma yöntemi de benzersizdir ve -W interactive
diğer awk
uygulamalarda gerekli değildir ).