कमांड / प्रोग्राम की पाइप श्रृंखला के साथ वॉच कमांड का उपयोग कैसे करें


51

मैं आम तौर पर watchहर n सेकंड में बार-बार एक कमांड के आउटपुट को देखने के लिए उपयोगकर्ता लिनक्स उपयोगिता, जैसेwatch df -h /some_volume/

लेकिन मुझे लगता है कि watchकमांड की एक पाइप श्रृंखला के साथ उपयोग करने में सक्षम नहीं होना चाहिए :

$ watch ls -ltr|tail -n 1

अगर मैं ऐसा करता हूं, watchतो वास्तव में देख रहा हूं ls -ltrऔर आउटपुट को पारित किया जा रहा है tail -n 1जो कुछ भी आउटपुट नहीं करता है।

अगर मैं यह कोशिश करूँ:

$ watch (ls -ltr|tail -n 1)

मुझे मिला

$ watch: syntax error near unexpected token `ls'

और निम्न में से कोई भी किसी न किसी कारण से विफल होता है:

$ watch <(ls -ltr|tail -n 1)

$ watch < <(ls -ltr|tail -n 1)

$ watch $(ls -ltr|tail -n 1)

$ watch `ls -ltr|tail -n 1)`

और अंत में अगर ऐसा करें:

$ watch echo $(ls -ltr|tail -n 1)

मुझे दिए गए अंतराल पर आउटपुट में कोई परिवर्तन नहीं दिखाई देता है क्योंकि अंदर कमांड $()केवल एक बार चलाया जाता है और परिणामस्वरूप आउटपुट स्ट्रिंग को हमेशा एक शाब्दिक के रूप में ("देखा") मुद्रित किया जाता है।

तो, मैं watchकमांड को पाइपों की श्रृंखला के साथ कमांड कैसे बना सकता हूं [अन्य जो उन्हें स्क्रिप्ट के अंदर डालते हैं]?


भागो man watchऔर उदाहरण के लिए नीचे स्क्रॉल करें ...
don_crissti

जवाबों:


82
watch 'command | othertool | yet-another-tool'

1
जेनेरिक दृष्टिकोण को ध्यान देने योग्य हो सकता है और साथ ही watch sh -c 'command | etc'विशेष रूप से प्रश्न में आजमाए गए दृष्टिकोणों को देखना।
sourcejedi 18

@sourcejedi मुझे वास्तव में पता नहीं क्यों लगा है, लेकिन यह हमेशा एक ही परिणाम नहीं देगा।
माइकल माइर


2

यदि आप उपनिर्देशिकाओं में भी सभी फाइलों को सूचीबद्ध करना चाहते हैं, तो आप निष्पादन विकल्प के साथ कमांड का उपयोग कर सकते हैं।

watchहर 30 सेकंड में अपडेट करेगा और findसभी * .log फ़ाइलों को वर्तमान dir (सबडिर में शामिल) के लिए खोजेगा और फ़ाइल नाम और उनकी अंतिम 10 पंक्ति प्रिंट करेगा:

watch -n30 'find . -name "*.log" -print -exec tail -n10 {} \; '
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.