나는 다른 로그를보고있다.
tail -q -f /var/log/syslog -f /var/log/fail2ban.log -f /var/log/nginx/error.log
각 로그의 출력을 다르게 채색하려면 어떻게해야합니까?
답변
grep
채색에 GNU 사용 하기 :
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
이렇게 하면 SIGINT Ctrl-C의 마지막 tail+grep
과 cat
다이와 다른 두 grep + tail은 다음에 무언가를 쓸 때 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)
또는 전체 꼬리 + 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
답변
이와 같은 Someting이 저에게 효과적이었습니다.
(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
파란색을 의미