मैं अलग लॉग देख रहा हूँ
tail -q -f /var/log/syslog -f /var/log/fail2ban.log -f /var/log/nginx/error.log
मैं अलग-अलग रंग के प्रत्येक लॉग का उत्पादन कैसे कर सकता हूं?
multitail
और इस सवाल के जवाब
मैं अलग लॉग देख रहा हूँ
tail -q -f /var/log/syslog -f /var/log/fail2ban.log -f /var/log/nginx/error.log
मैं अलग-अलग रंग के प्रत्येक लॉग का उत्पादन कैसे कर सकता हूं?
multitail
और इस सवाल के जवाब
जवाबों:
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(शेल अतुल्यकालिक नौकरियों के लिए स्पष्ट रूप से उपेक्षा करें)।
इसे रोकने के लिए, आप इसके बजाय कर सकते हैं:
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
मरने (साइगंट के) और अन्य दो grep + पूंछ एक 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
मरने पर अगली बार जब यह लिखते हैं तो किसी SIGPIPE की grep
मृत्यु हो जाएगी।
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
tailc
फ़ंक्शन के साथ गया, जिसने सबसे अच्छा काम किया और स्क्रिप्ट में सबसे सहज लग रहा है।
इस तरह से मेरे लिए काम करना:
(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
मतलब नीला-W interactive
लगता है, mawk
-स्पेशल। (जिस तरह से mawk
इसका इनपुट डिफ़ॉल्ट रूप से बफ़र करता है वह भी अद्वितीय है, और -W interactive
अन्य awk
कार्यान्वयन में इसकी आवश्यकता नहीं होगी )।