यही कारण है कि मैं यह भी करना शुरू कर दिया है, लेकिन इसके साथ बहुत अधिक परिष्कृत हो गया है। कुछ बातों का ध्यान रखना चाहिए:
- यदि लॉग की पूंछ में पहले से ही "सर्वर ऊपर है"।
- एक बार मिल जाने पर पूंछ की प्रक्रिया को स्वचालित रूप से समाप्त करना।
मैं इस की तर्ज पर कुछ का उपयोग करता हूं:
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