2010-10-20 31 views
6

एक यूनिक्स प्रणाली, मैं कैसे (कैसे 'पूंछ' काम करता है) की तरह नज़र रखते हैं फ़ाइलों में किए गए परिवर्तनों के लिए एक निर्देशिका पर - या तो बनाए गए नए लोगों, या आकार में परिवर्तन, आदिपरिवर्तन के लिए निर्देशिका निर्देशिका की निगरानी?

बजाय एक कमांड लाइन टूल के लिए खोज रहे स्थापित करने के लिए कुछ।

उत्तर

1

यदि आप टूल इंस्टॉल नहीं करना चाहते हैं तो आप अपना खुद का शिल्प बना सकते हैं। एक विचार है। find कमांड का उपयोग कर अपनी निर्देशिका की एक बेस लाइन फ़ाइल बनाएं। एक लूप या क्रॉन जॉब का उपयोग करें, find उसी पैरामीटर का उपयोग कर निर्देशिका, और बेस लाइन फ़ाइल के खिलाफ नई फ़ाइल जांचें। मतभेद पाने के लिए diff की तरह एक उपकरण का उपयोग करें ..

जैसे

find /path [other options] >> baseline.txt 
while true #or use a cron job 
do 
    find /path [same options] >> listing.txt 
    diff baseline.txt listing.txt 
    # do processing here... 
    mv listing.txt baseline.txt # update the baseline. 
    sleep 60 
done 
+0

बस मेरे संदर्भ के लिए - क्या इस तरह की चीजें मौजूद हैं? – siliconpi

+0

आप किस चीज के बारे में बात कर रहे हैं? यदि आप ऐसी चीजों के लिए उपकरण के बारे में बात कर रहे हैं, तो हाँ। ट्रिपवायर, इनोटिफी इत्यादि जैसे उपकरण ... – ghostdog74

5

अधिकांश यूनिक्स वेरिएंट इस के लिए एक API है, लेकिन यह मानकीकृत नहीं है। लिनक्स पर, inotify है। कमांड लाइन पर, आप inotifywait का उपयोग कर सकते हैं। प्रयोग उदाहरण:

inotifywait -m /path/to/dir | while read -r dir event name; do 
    case $event in 
    OPEN) echo "The file $name was created or opened (not necessarily for writing)";; 
    WRITE) echo "The file $name was written to";; 
    DELETE) echo "The file $name was deleted ";; 
    esac 
done 

Inotify घटना प्रकार अक्सर नहीं वास्तव में क्या आप सूचना के लिए (उदाहरण के लिए खुली बहुत व्यापक है) की कोशिश कर रहे हैं, इसलिए यदि आप अंत अपनी खुद की फ़ाइल के चेक बनाने बुरा न मानें।

+0

यह सही जवाब है क्योंकि यह दिखाता है कि परिवर्तनों की निगरानी के लिए एपीआई का उपयोग कैसे किया जाए। Ghostdog74 का जवाब काम कर सकता है, लेकिन इसकी संसाधनों की लागत है। यदि आपको 1000 निर्देशिकाओं की निगरानी करने की आवश्यकता है तो क्या होगा? –

+0

नोट: यह उत्तर केवल लिनक्स कर्नेल 2.6.13 या बाद में उपयोग करते समय काम करता है। अन्य नीतियों के बारे में निश्चित नहीं है। –

+0

क्या आप कृपया स्पष्टीकरण दे सकते हैं * ** पढ़ते-डी डीआईआर घटना का नाम; ** क्या *? – arod

संबंधित मुद्दे