कमांड आउटपुट का पुनर्निर्देशन अप्रासंगिक लगता है क्योंकि अधिसूचना को शेल द्वारा तब भेजा जाता है जब नौकरी को अतुल्यकालिक रूप से शुरू किया जाता है। अधिक सटीक रूप से, यह नौकरी नियंत्रण से संबंधित एक खोल सुविधा (fonctionality) है ।
यहां, एक उद्धरण जो "बैश संदर्भ मैनुअल", अध्याय "जॉब कंट्रोल", अनुभाग एक से आता है।
शेल प्रत्येक पाइपलाइन के साथ एक जॉब को जोड़ता है। यह वर्तमान में कार्य निष्पादित करने की एक तालिका रखता है, जिसे jobs
कमांड के साथ सूचीबद्ध किया जा सकता है । जब बैश अतुल्यकालिक रूप से एक नौकरी शुरू करता है, तो यह एक रेखा को प्रिंट करता है जो दिखता है:
[1] 25647
यह दर्शाता है कि यह नौकरी जॉब नंबर 1 है और इस जॉब से जुड़ी पाइपलाइन में अंतिम प्रक्रिया की प्रक्रिया आईडी 25647 है। एकल पाइपलाइन में सभी प्रक्रियाएं एक ही जॉब की सदस्य हैं। बैश नौकरी नियंत्रण के लिए आधार के रूप में JOB अमूर्त का उपयोग करता है।
ध्यान दें कि एक शेल स्क्रिप्ट इस अधिसूचना को प्रदर्शित नहीं करता है।
$ cat test
#!/bin/bash
true & echo true
$ ./test
true
वास्तव में
Zsh
Zsh प्रलेखन इन सूचनाओं के बारे में समान संकेत प्रदान करता है, देखें man 1 zshmisc
, "JOBS" अनुभाग। इन सूचनाओं को प्रदर्शित नहीं किया जाता है जब नौकरी नियंत्रण अक्षम होता है।
MONITOR ( -m , ksh: -m )
नौकरी पर नियंत्रण की अनुमति दें। इंटरेक्टिव शेल में डिफ़ॉल्ट रूप से सेट करें।
zsh_prompt % setopt no_monitor
zsh_prompt % true & echo true
true
zsh_prompt %
zsh_prompt %
दे घुमा के
ऐसा लगता है कि बैश हमेशा उदाहरण के लिए प्रदर्शित होता है [1] 25647
। "अंतिम अधिसूचना" जैसे [1]+ Done true
कि नौकरी नियंत्रण को अक्षम करने पर प्रदर्शित नहीं किया जाता है।
bash_prompt $ true & echo true
[1] 25647
true
bash_prompt $
[1]+ Done true
नौकरी पर नियंत्रण अक्षम
bash_prompt $ set +m # disable job control
bash_prompt $ true & echo true
[1] 25685
bash_prompt $
bash_prompt $
निष्कर्ष
मुझे नहीं पता कि नोटिफिकेशन को छिपाने के लिए जॉब कंट्रोल को डिसेबल करना अच्छी बात है?
साधन