मॉनिटर करें कि क्या भेजा जा रहा है / देव / अशक्त?


19

बस मज़े के लिए:
क्या जो कुछ भी लिखा जा रहा है उसे मॉनिटर / कैप्चर / डंप करने का एक तरीका है /dev/null?

डेबियन, या FreeBSD पर, अगर यह मायने रखता है, तो कोई अन्य OS विशिष्ट समाधान भी स्वागत योग्य है।


3
संभव है, लेकिन जवाब और टिप्पणियों के रूप में यह वर्णन करता है / बहुत / बहुत अच्छा विचार नहीं है।
शादुर

2
@ बहादुर: बुरा समाधान हो सकता है लेकिन यह विचार को निर्बाध या बुरा विचार नहीं बनाता है।
जलेगीरे

1
वास्तव में, मुझे यह सवाल सिर्फ इसलिए मिला क्योंकि मैं इस बात पर विचार कर रहा था कि कई कैप्चर की गई सामग्री का विश्लेषण क्या /dev/nullहो सकता है। मैं स्वयं शोध नहीं करना चाहता, लेकिन मुझे परिणाम पढ़ने में अच्छा लगेगा। (अनिवार्य रूप से "लोगों के कूड़ेदान से गुजरना" में कुछ नैतिक मुद्दे होने की संभावना है, लेकिन अवधारणा फिर भी दिलचस्प है।)
15:14 पर रिपोर्टर

जवाबों:


12

/dev/nullनामित पाइप बनाना शायद सबसे आसान तरीका है। चेतावनी दें कि कुछ कार्यक्रम ( sshdउदाहरण के लिए) असामान्य रूप से कार्य करेंगे या निष्पादित करने में विफल होंगे जब उन्हें पता चलेगा कि यह एक विशेष फ़ाइल नहीं है (या वे इसे पढ़ सकते हैं /dev/null, इसके वापस लौटने की उम्मीद है EOF)।

# Remove special file, create FIFO and read from it
rm /dev/null && mkfifo -m622 /dev/null && tail -f /dev/null
# Remove FIFO, recreate special file
rm /dev/null && mknod -m666 /dev/null c 1 3

यह सभी लिनक्स वितरण और सभी प्रमुख बीएसडी के तहत काम करना चाहिए।


1
ध्यान देने वाली एक बात यह है कि यदि tailविफल रहता है, तो बहुत सारे कार्यक्रम विफल हो सकते हैं क्योंकि पाइप का बफर भरा हुआ है।
Arcege

4
प्रोग्राम जो पढ़ते हैं /dev/nullवे इस तरह नहीं जा रहे हैं।
गिलेस एसओ- बुराई को रोकना '

@ गिल्स - वास्तव में, इसलिए मेरा नोट।
क्रिस डाउन

3
@ अली हां। No magicUNIX दर्शन में एक मार्गदर्शक सिद्धांत है।
फिहग

4
अहम /dev/null है , जादू mknod /dev/null c 1 3यह आह्वान करने के लिए जादू फार्मूला है। (और आपको इसके लिए महाशक्तियों की आवश्यकता है ...)
स्टीफन गिमेनेज

6

मुझे एक बार यह पता चला था कि / dev / null के पास एक विशेष dev फ़ाइल नहीं है। कुछ समय पहले काम पर एक अल्ट्रिक्स सिस्टम पर / dev / null हटा दिया गया था, इसलिए अगली बार जब कोई प्रोग्राम / dev / null पर रीडायरेक्ट हुआ, तो उस प्रोग्राम से आउटपुट से भरा एक सामान्य फ़ाइल होना समाप्त हो गया। (मुझे लगता है कि यह 'ऐसी कोई फ़ाइल या निर्देशिका नहीं थी', जिसका अर्थ था कि जब हम यह पता लगाने की कोशिश कर रहे थे कि क्या चल रहा है, तो हम ऐसा करेंगे cat /dev/nullऔर हमें बताया जाएगा कि हम में से no such file or directoryकौन नरक को भ्रमित कर रहा है।)

इसलिए मेरा सुझाव इसे नामांकित पाइप से बदलना होगा, और फिर पाइप को एक प्रोग्राम संलग्न करना होगा जो इसे पढ़ेगा और इसकी निगरानी करेगा।


4
बहुत सारे कार्यक्रम /dev/nullहमेशा एक रीड ( cat /dev/null > foo) पर 0 बाइट्स वापस करने में भरोसा करते हैं । बीत रहा है /dev/nullसामग्री के साथ एक नियमित रूप से फ़ाइल हो, इस उम्मीद से टूट जाएगा।
Arcege

1
हां, हमने इसे खोजा है। कार्यक्रम कोई इनपुट नहीं होने की उम्मीद कर रहे थे और इसके gobs, प्लस / dev / भरा जा रहा था।
पॉल टॉम्बलिन

1

मैं एक ऐसे विचार के बारे में सोचता हूं, जहां / dev / null एक फाइल डिस्क्रिप्टर के लिए एक सिमलिंक हो सकता है, लेकिन ऑपरेशन को पढ़ने या लिखने के लिए कोड तंत्र जोड़ने के साथ पढ़ा जाता है और फिर यदि इसे पढ़ा जाता है, तो इसे वास्तव में / dev / realnull से अलग किए गए से पढ़ना चाहिए। mknod और यदि यह लिखा जाता है, तो आह्वान कार्यक्रम का एक नोट बनाएं और उन कार्यक्रमों का विश्लेषण करने के लिए लॉग / गिनती करने का प्रयास करें जो लेखन के लिए / dev / null का उपयोग करते हैं। यह प्रदर्शन के मामले में बहुत अधिक खर्च करने वाला है, मुझे लगता है कि हालांकि। मुझे लगता है कि यह व्यावहारिक नहीं है क्योंकि अधिकांश शेल प्रोग्राम या कोड वैसे भी पुनर्निर्देशन का उपयोग करते हैं। हो सकता है कि / in / dev / null के उपयोग की निगरानी के लिए inotify का इस्तेमाल किया जाए? या उस कर्नेल कोड को फिर से लिखें जो 1: 3 उपकरणों को संभालता है, फिर से संकलित करता है और प्रयोग में लाता है।


2
अभी भी कुछ समस्याएं हैं, मैंने ऐसा कुछ करने की कोशिश की (इन-कर्नेल में नहीं, बल्कि पारदर्शी रूप से-ईश को किसी अन्य फ़ाइल से पढ़ने और /dev/nullडेमॉन से नियंत्रित करने की अनुमति देकर ), और फिर sshdभी शिकायत की और शुरू नहीं होगी।
क्रिस डाउन

hmm..in पर एक डेमॉन से नियंत्रित / देव / अशक्त। मुझे लगता है कि अधिकांश कार्यक्रम सिर्फ / dev / null का उपयोग करना चाहेंगे, क्योंकि सिस्टम के महत्व और शब्दार्थ / null को छोड़कर सिर्फ एक अन्य फ़ाइल।
निखिल मुल्ले

खैर, sshd(कम से कम, जैसा कि डेबियन स्क्वीज़ के लिए पैक किया गया है) शिकायत करता है sshd: cannot create /dev/nullकि यह कुछ भी है लेकिन सबसे आम कार्यान्वयन है।
क्रिस डाउन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.