विंडोज - cmd बंद करने के बाद बैकग्राउंड पर रन प्रोसेस


15

मेरे पास एक पायथन स्क्रिप्ट है जिसे मैं विंडोज पर एक पृष्ठभूमि प्रक्रिया के रूप में चलाना चाहता हूं।

मैं लिनक्स पर ऐसा कर सकता हूं:

python script.py &

और फिर टर्मिनल से इस प्रक्रिया को डिस्कनेक्ट करें:

disown

विंडोज पर, मेरे पास अब तक यह सब है:

start /b python script.py

हालाँकि, यदि मैं CMD विंडो बंद करता हूँ, तो स्क्रिप्ट चलना बंद हो जाती है। क्या कोई अतिरिक्त कमांड है जो मैं स्क्रिप्ट को पृष्ठभूमि पर चलने के लिए यहां याद कर रहा हूं?

जवाबों:


6

startपहले से ही सही दिशा होनी चाहिए। हालाँकि, /bइसे उसी कंसोल से जोड़ता है। अब समस्या यह है कि जब कंसोल विंडो बंद हो जाती है, तो इस कंसोल से जुड़ी कोई भी प्रक्रिया भी बंद हो जाएगी।

आप या तो startबिना उपयोग कर सकते हैं /b, फिर यह एक नए कंसोल में चलेगा। यदि आप इसे कंसोल विंडो के बिना पृष्ठभूमि में चलाना चाहते हैं, तो आपको वीबीएसस्क्रिप्ट या थर्ड-पार्टी टूल का उपयोग करना होगा: पूरी तरह से छिपे हुए तरीके से एक बैच फ़ाइल चलाएँ

हालाँकि, उस स्थिति में आप stdout / stderr आउटपुट अब नहीं देखेंगे। आप इसे एक फ़ाइल में पुनर्निर्देशित कर सकते हैं, हालांकि इसे cmd /c your_command > stdout.txt 2> stderr.txtकॉल में लपेटकर और उपरोक्त तरीकों में से एक के माध्यम से इसे शुरू कर सकते हैं (VBScript, तृतीय-पक्ष उपकरण, ...)।

वैकल्पिक रूप से, आप बाहर निकलने से पहले अपनी खुद की कंसोल विंडो भी छिपा सकते हैं। मैंने अभी थोड़ा एक-लाइन प्रोग्राम लिखा है जो वास्तव में ऐसा करता है (स्रोत कोड मूल रूप से है ShowWindow(GetConsoleWindow(), SW_HIDE)): http://share.cherrytree.at/showfile-24286/hide_current_console.exe

इस तरह, आप उपयोग कर सकते हैं start /b, और जब आप अपने कंसोल को "बंद" करना चाहते हैं (तकनीकी रूप से इसे छिपाते हैं), तो आप चलाएंगे hide_current_console & exitजो कंसोल को छिपाएगा और फिर cmd.exe प्रक्रिया को बंद करेगा (न कि अजगर प्रक्रिया को) - एक पंक्ति में, चूंकि आप exitकंसोल को पहले से ही छिपाए जाने के बाद टाइप नहीं कर सकते हैं ।


कहाँ hide_current_consoleसे आता है? एक W10 पीसी पर काम नहीं करता है।
Btc स्रोत

1
मैंने इसे फिर से परीक्षण किया, यह अभी भी काम करता है। यह कहाँ से आता है: कृपया पोस्ट को फिर से पढ़ें, मैंने स्रोत कोड की एक पंक्ति को दिखाया है जो इस फ़ाइल ने डाउनलोड करने के लिए एक संकलित छुपा_current_console.exe फ़ाइल से लिंक किया है ...
CherryDT

-2

मैंने पाया कि निम्नलिखित ने मेरे लिए अच्छा काम किया:

run python script.py

1
ओह, और पृष्ठभूमि के बजाय लिनक्स पर ( &) और disownमैं उपयोग करने का सुझाव दूंगा nohup
nikc

5
Windows cmd शेल में दर्ज किया गया कमांड निम्न त्रुटि देता है 'run' is not recognized as an internal or external command, operable path or batch file.:।
मार्कशीट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.