मैं अपने vsftpd लॉग की निगरानी करना चाहता हूं और अपलोड की गई फ़ाइलों को संसाधित करने के लिए लॉग से जानकारी खींच सकता हूं। अब तक सब कुछ बहुत अच्छा था और ठीक काम किया:
tail -n0 -F /var/log/vsftpd.log | while read line; do
if echo "$line" | grep -q 'OK UPLOAD:'; then
#do a bunch of processing stuff - this takes some time
fi
done
मैंने कुछ पैमाने पर परीक्षण करना शुरू किया और एक साथ 500 फाइलें अपलोड कीं। किसी कारण से लॉग लाइनें गायब हैं या जब आप इतनी सारी चीजें अपलोड करते हैं तो वे कट जाते हैं। उदाहरण के लिए एक विशिष्ट रेखा इस तरह दिखती है:
Sun Apr 7 09:08:51 2013 [pid 25409] [cam02430] OK UPLOAD: Client "206.132.183.201", "/20130407/09/20130407_090842D.avi", 531792 bytes, 426.14Kbyte/sec
लेकिन कभी-कभी लाइन इस तरह दिखती है (यदि पूरी तरह से गायब नहीं है):
:08:51 2013 [pid 25409] [cam02430] OK UPLOAD: Client "206.132.183.201", "/20130407/09/20130407_090842D.avi", 531792 bytes, 426.14Kbyte/sec
यह लॉग के पहले कुछ अक्षरों को काट रहा है। यह हर लाइन के लिए नहीं है, लेकिन सबसे ज्यादा है। साथ ही कई लाइनें अभी गायब हैं। मुझे लगता है कि मैं अपने प्रसंस्करण की एक दौड़ हालत है समय में खत्म नहीं। मैं इसके आसपास कैसे पहुंच सकता हूं?
संपादित करें मुझे लगता है कि मेरे पास 3 विकल्प हैं:
पूंछ का उपयोग न करें और एक नई प्रविष्टि के लिए लॉग की जांच करने के लिए क्रोन जॉब / grep जैसी चीजों के संयोजन का उपयोग करने का प्रयास करें। मुझे लगता है कि यह मुश्किल हो सकता है। मैं कैसे बताऊं कि उस लॉग में नया क्या है?
मॉनेट या समकक्ष के साथ फ़ाइल परिवर्तन की निगरानी करें। मेरा मानना है कि यह एक विकल्प नहीं है। फ़ाइलें कुछ नामांकित फ़ाइलों के साथ कुछ यादृच्छिक निर्देशिकाओं में संग्रहित हो जाती हैं, जिन पर समय की मुहर लगती है।
लॉगस्टैश या समकक्ष। मुझे नहीं लगता कि ये कार्यक्रम मेरी आवश्यकताओं के अनुरूप हैं। लेकिन शायद किसी और को जानता हो।
अभी मैं # 1 पर ध्यान दे रहा हूं जिसमें कोई अच्छा लीड नहीं है। तो इस पर किसी भी विचार की सराहना की जाएगी।