मैं अलग लॉग देख रहा हूँ
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कार्यान्वयन में इसकी आवश्यकता नहीं होगी )।