यह "पूर्ण" संदेश है क्योंकि शेल में अभी भी अपने कार्य नियंत्रण के तहत कमान है:
$ sleep 10 &
[1] 660
$ jobs
[1]+ Running sleep 10 &
(time passes)
$
[1]+ Done sleep 10
आप (ए) के साथ नौकरी से नियंत्रण हटा सकते हैंdisown
$ sleep 100 &
[1] 3804
$ jobs
[1]+ Running sleep 100 &
$ disown
$ jobs
$
मुझे इसकी शुरुआत (b) के साथ किसी काम को सही तरीके से करने का तरीका नहीं पता है , इसलिए मैं प्रस्ताव करता हूं कि आप disown
ध्वनि कमांड के ठीक बाद अपने bashrc में डाल दें । हालाँकि, यह सभी नौकरियों को समाप्त कर देगा - मुझे नहीं पता कि क्या यह चाहता है। अन्यथा आप उपयोग कर सकते हैं disown %aplay
।
(ए) man bash
disown [-ar] [-h] [jobspec ...]
विकल्पों के बिना, प्रत्येक जॉबस्पेक को सक्रिय नौकरियों की तालिका से हटा दिया जाता है। यदि जॉबस्पेक मौजूद नहीं है, और न तो -ए और न ही-आर की आपूर्ति की जाती है, तो वर्तमान नौकरी की शेल की धारणा का उपयोग किया जाता है। यदि -एच विकल्प दिया जाता है, तो प्रत्येक जॉबस्पेक को टेबल से नहीं हटाया जाता है, लेकिन इसे चिह्नित किया जाता है, ताकि शेल को राइट्स प्राप्त होने पर साइट पर काम न भेजा जाए। यदि कोई जॉबस्पेक मौजूद नहीं है, और न तो -a और -r विकल्प की आपूर्ति की जाती है, तो वर्तमान नौकरी का उपयोग किया जाता है। यदि कोई जॉबस्पेक की आपूर्ति नहीं की जाती है, तो -a विकल्प का अर्थ है सभी नौकरियों को निकालना या चिह्नित करना; नौकरी के तर्क के बिना -r विकल्प रनिंग जॉब्स के संचालन को प्रतिबंधित करता है। रिटर्न वैल्यू 0 है जब तक कि जॉबस्पेक एक वैध नौकरी निर्दिष्ट नहीं करता है।
(b) हालाँकि, Z शेल में zsh
यह आसान है:
zsh$ sleep 10 &!
zsh$ jobs
zsh$
(sleep 10 &)
अक्सर इस्तेमाल किया जाने वाला वर्कअराउंड है।setsid sleep 10
आवश्यकताओं के आधार पर एक और है (यह इस से अलग&
है कि यह भी नियंत्रित ट्टी से अलग हो जाता है)।