पता लगाएँ कि कौन सी प्रक्रिया एक विशिष्ट निर्देशिका में लिख रही है


19

मेरे पास एक निर्देशिका / कुछ / डीआईआर है, और मैं देखता हूं कि हर समय नई फाइलें दिखाई देती हैं। मुझे कैसे पता चलेगा कि कौन सी प्रक्रिया उन फ़ाइलों को बना रही है?

जवाबों:


18

कोशिश करो lsof +r2 | grep '/some/dir'। यह प्रक्रियाओं को एक्सेस / कुछ / dir दिखाएगा और हर 2 सेकंड में रीफ़्रेश करेगा।


2
Thaks, यह मेरी ज़रूरत के काफी करीब है, क्योंकि यह पहले खुली फ़ाइलों की पूरी सूची का उत्पादन करता है, फिर / कुछ / dir द्वारा फ़िल्टर करता है। हालाँकि, यदि प्रक्रियाएँ बहुत तेज़ी से फ़ाइलें बनाती हैं और उन्हें खोलती नहीं हैं, तो मैं समझती हूँ कि ऊपर वाला कुछ याद कर सकता है। मुझे लगता है कि उस मामले में ऑडिट सबसिस्टम का एकमात्र विकल्प सही है?
homer5439

आपकी धारणा सही है। एक और विचार inotifywait का उपयोग करना है, linux.die.net/man/1/inotifywait
weeheavy

धन्यवाद, मैंने पहले इनोटिफाई टूल पर विचार किया था, हालांकि मैंने पाया कि वे पूरी तरह से फाइलसिस्टम स्तर पर काम करते हैं और लगता नहीं है कि किसने क्या किया, इसके बारे में जानकारी देने में सक्षम नहीं हैं।
homer5439

18

कर्नेल auditसबसिस्टम का उपयोग करें

auditctl -w /some/dir/ -p war -k whatsgoingon

कि / कुछ / dir / के तहत होने वाली प्रतीक्षा के लिए हुक सेट करता है।

फिर सुनिश्चित करें कि आपके पास auditdडेमन रनिंग है। उसके बाद बस तब तक प्रतीक्षा करें जब तक कि फाइलें दिखाई न दें और /var/log/auditd.logजहां से या आपके सिस्टम में यह लिखें और पढ़ें कि क्या हुआ और किस प्रक्रिया से हुआ।


धन्यवाद, ऐसा लगता है कि यह बिल्कुल वैसा ही है, हालांकि इसके लिए ऑडिट टूल इंस्टॉल करने की आवश्यकता होती है जो संभवतः डिफ़ॉल्ट रूप से हर जगह नहीं होते हैं। लेकिन ठीक है, अगर किसी को उस जानकारी की आवश्यकता होती है, तो वे हमेशा स्थापित हो सकते हैं।
homer5439

इसे देखने वाले लोगों के लिए एक नोट के रूप में: आप शीर्ष-स्तरीय निर्देशिकाओं (कर्नेल द्वारा निषिद्ध) पर घड़ियों को नहीं रख सकते हैं
टोनी सीपिया

1
यह वास्तव में एक कुशल तरीका है! बहुत बहुत धन्यवाद!!! BTW, जब आप कर रहे हैं, तो आप ऑडिट लॉग को हमेशा के लिए लिखने से बचने के लिए सभी हुक निकाल सकते हैं auditctl -D। आप auditctl -lसभी हुक को सूचीबद्ध करने के लिए उपयोग कर सकते हैं ।
राबर्ट

0

lsof मदद कर सकते है:

# lsof -r1 /some/dir/*

1
धन्यवाद। क्या यह सही है कि उपरोक्त कमांड केवल मुझे बताती है कि कौन मौजूदा फ़ाइलों तक पहुँच बना रहा है, लेकिन नई बनाई गई फ़ाइलों के लिए कुछ भी नहीं दिखाता है? मेरी समझ यह है कि / / कुछ / dir / * उस समय मौजूद फाइलों की सूची में फैल जाता है, जिस समय कमांड का आह्वान किया जाता है।
homer5439
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.