बाद में कंसोल इंटरेक्शन की आवश्यकता वाले कार्यक्रमों को छोड़कर पृष्ठभूमि के लिए अच्छी तरह से (उदाहरण के लिए, एक "उपयुक्त अद्यतन और" जो अंततः STOP राज्य में प्रवेश करता है क्योंकि यह उपयोगकर्ता को "वास्तव में बल" का संकेत देना चाहता है? .... जब कोई नहीं देख रहा है)।
उस छेद को प्लग करने के लिए और इस प्रक्रिया को सूचित करने के लिए कि एक टर्मिनल वास्तव में कभी भी इसके लिए उपलब्ध नहीं होगा, मैं अपने कुछ आदेशों के लिए एक <& - संलग्न करता हूं, उन्हें सक्रिय टर्मिनल से पूरी तरह से अलग करके बता रहा है कि STDIN अब संभव नहीं है। सुनिश्चित करें कि बिन / बैश आपका शेल है यदि आप इसका उपयोग करते हैं, हालांकि। पटकथा में कोई भी छद्म शब्द उपलब्ध नहीं होने से संबंधित किसी भी त्रुटि को लॉग ऑन किया जाएगा, जिस पर कोई भी संकेत दिया जा सके।
उदाहरण के लिए:
`./runme.sh &> runme.log <&- & disown`
वर्तमान टर्मिनल सत्र से अलग करने का मेरा अंतिम तरीका है। STDOUT और STDERR दोनों runme.log में लॉग इन हो जाते हैं, इससे कोई फर्क नहीं पड़ता कि आपका कंसोल या शेल कितनी जल्दी समाप्त हो जाता है या यदि आप लॉगआउट / su एक अलग खाते में (रनमी से कोई टर्मिनल कचरा नहीं), और यहां तक कि माता-पिता के बच्चे को भंग करने के लिए धन्यवाद पीआईडी संबंध हटा दिया जाता है।
अद्यतन: यहां तक कि इसके साथ मुझे मूल माता-पिता के नाम के साथ जोड़ते हुए एक अर्ध-समस्या से परेशानी हुई है, इसलिए अब मैं इसके बजाय सलाह देता हूं:
at now <<< "(cmd1; cmd2; etc.) &> logfile.log"
यदि आप CRON से आउटपुट ईमेल करना चाहते हैं, या इसे किसी फ़ाइल के बजाय / dev / null पर रीडायरेक्ट करना चाहते हैं, तो निश्चित रूप से &> को हटा दें।
screen
), अन्य चीजों के अलावा, लंबी चलने वाली प्रक्रियाओं को "लपेटने" के लिए उपयोग किया जा सकता है। आप इसे अलग कर सकते हैं, शेल पर वापस जा रहे हैं, फिर रीटचैच और रनिंग प्रक्रिया से आउटपुट देख सकते हैं। Reattachment को दूसरे टर्मिनल, SSH आदि से भी किया जा सकता है। ऐसे अन्य कार्यक्रम भी हो सकते हैं, जो आपको इस प्रकार का काम करने दें।