किसी चल रहे प्रोग्राम के आउटपुट को / dev / null में रीडायरेक्ट कैसे करें


19

मुझे पता है कि एक प्रोग्राम के आउटपुट को दबाने के लिए मैं इसे रीडायरेक्ट कर सकता हूं /dev/null, उदाहरण के लिए क्रोमियम से सभी त्रुटि और चेतावनी संदेशों को छिपाने के लिए मैं इस तरह से प्रोग्राम शुरू कर सकता हूं

chromium-browser 2> /dev/null &

हालाँकि, अगर मैं त्रुटि संदेशों और प्रकार के बारे में भूल जाता हूँ

chromium-browser &

(जो एक आदेश के बीच में प्रकट होने पर काफी कष्टप्रद है) मुझे नहीं पता कि आवेदन को रोकने और इसे फिर से ठीक से शुरू करने के अलावा क्या करना है।

क्या मैं किसी भी तरह से एप्लिकेशन को पुनः आरंभ किए बिना त्रुटि आउटपुट को रीडायरेक्ट कर सकता हूं?

जवाबों:


8

आप ब्राउज़र को nohup के साथ भी लॉन्च कर सकते हैं और फिर टर्मिनल विंडो को निम्न के साथ बंद कर सकते हैं:

nohup chromium-browser &

इस तरह, ब्राउज़र कंसोल से लॉन्च और अलग हो जाएगा, फिर इसे चुपचाप बंद किया जा सकता है।


2
यह स्वीकार्य है, इस तथ्य को छोड़कर कि मुझे nohup
phunehehe

5
@ एफयू ज़श पर कम से कम आप setopt nohupअपने अंदर डाल सकते हैं .zshrcऔर यह आपके द्वारा चलाए जाने वाले सभी चीज़ों को नोह देगा; मैं अन्य गोले के बारे में यकीन नहीं है
माइकल Mrozek

हाँ, महान, मुझे यह इस तरह से पसंद है!
फुनहेे सेप

3
या आप एक उपनाम बना सकते हैं ... उर्फ ​​क्रोमियम = नोहुप क्रोमियम
पाब्लो ओल्मोस डी एगुइलेरा सी।

22

इसका उत्तर यहाँ दिया गया था: यहाँ vladr द्वारा । इसका उत्तर है (उद्धृत):

  • gdb का उपयोग करके प्रक्रिया में संलग्न करें, और चलाएँ:
  • पी डुप 2 (खुला ("/ देव / नल", 0), 1) (स्टडआउट पुनर्निर्देशन के लिए)
  • पी डुप 2 (खुला ("/ देव / नल", 0), 2) (स्टैडर पुनर्निर्देशन के लिए)
  • अलग करें
  • छोड़ना

मैंने इसे निम्नलिखित स्क्रिप्ट पर आज़माया:

[पहली टिप्पणी के बाद संस्करण:]

नींद 10 # तो मेरे पास प्रक्रिया से जुड़ने का समय हो सकता है
अगर ["$ sonorfather" == "पिता"] # अनंत पुनरावृत्ति से बचें 
फिर 
   sonorfather = son ./est और 
फाई 

जबकि सच है 
कर 
   गूंज "स्टडआउट $ सोनफोर" 
   गूंज "stderr $ sonorfather"> & 2 
   सो जाओ १ 
किया हुआ 

मैंने बेटे की प्रक्रिया से पहले stderr आउटपुट को निष्क्रिय कर दिया था, यहाँ आउटपुट है:

पिता से दूर रहना 
तेजस्वी पुत्र 
पिता से दूर रहना 
तेजस्वी पुत्र 
[और इसी तरह...]। 

मुझे आशा है कि यह आपके प्रश्न का उत्तर देगा: बेटे की प्रक्रिया stderr को भी पुनर्निर्देशित किया गया था।


3
यह बहुत अच्छा था, लेकिन फिर मुझे क्रोमियम के साथ समस्या हो सकती है, क्योंकि यह प्रत्येक ब्राउज़र टैब के लिए एक नई प्रक्रिया पैदा करता है, वैसे भी हल करने के लिए?
फुनेहे

आपको जवाब देने के लिए मेरी पोस्ट संपादित की।
माइक पेर्डाइड

ऐसा लगता है कि मुझे चाइल्ड प्रोसेस बनने से पहले आउटपुट को रीडायरेक्ट करना होगा? ज्ञान के लिए धन्यवाद, लेकिन जटिलता के बारे में मैं अभी साथ nohup
जाऊंगा

तकनीकी रूप से, यह डुप्लिकेट फ़ाइल डिस्क्रिप्टर के लिए लीक /dev/nullकरता है, लेकिन व्यवहार में जो कुछ भी प्रभावित नहीं करता है।
केविन

6

तुम भी chromium-browserबजाय चलाने के लिए एक उपनाम सेटअप कर सकते हैंchromium-browser 2> /dev/null

जैसे यदि आप बैश का उपयोग कर रहे हैं, तो /home/username/.bashrc संपादित करें और लाइन जोड़ें:

chromium-browser='chromium-browser 2> /dev/null'

या अभी तक बेहतर है

chrome='chromium-browser 2> /dev/null'

और कुछ कीस्ट्रोक्स बचाओ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.