यही कारण है कि मैं यह भी करना शुरू कर दिया है, लेकिन इसके साथ बहुत अधिक परिष्कृत हो गया है। कुछ बातों का ध्यान रखना चाहिए:
- यदि लॉग की पूंछ में पहले से ही "सर्वर ऊपर है"।
- एक बार मिल जाने पर पूंछ की प्रक्रिया को स्वचालित रूप से समाप्त करना।
मैं इस की तर्ज पर कुछ का उपयोग करता हूं:
RELEASE=/tmp/${RANDOM}$$
(
trap 'false' 1
trap "rm -f ${RELEASE}" 0
while ! [ -s ${RELEASE} ]; do sleep 3; done
# You can put code here if you want to do something
# once the grep succeeds.
) & wait_pid=$!
tail --pid=${wait_pid} -F /path/to/serverLog \
| sed "1,10d" \
| grep "server is up" > ${RELEASE}
यह tail
तब तक खुला रखने से काम करता है जब तक कि ${RELEASE}
फाइल में डेटा न हो।
एक बार grep
सफल होने के बाद :
- उत्पादन करने के लिए लिखता है
${RELEASE}
जो होगा
${wait_pid}
करने के लिए प्रक्रिया को समाप्त
- बाहर निकलें
tail
नोट: sed
वास्तव tail
में स्टार्टअप पर उत्पादन लाइनों की संख्या और उस नंबर को हटाने के लिए निर्धारित करने के लिए अधिक परिष्कृत हो सकता है । लेकिन आम तौर पर, यह 10 है।
tail -F
लॉग रोटेशन को संभालने के लिए उपयोग करना सुनिश्चित करें - यानीmy.log
पूर्ण हो जाता है और आगे बढ़ता हैmy.log.1
और आपकी प्रक्रिया एक नया बनाता हैmy.log