Windows सेवा के रूप में बैच फ़ाइल चलाएँ


159

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

क्या इस बैच फ़ाइल को सेवा के रूप में चलाया जा सकता है? मैं एक ऐसे ही प्रश्न के सुझावों में से एक का प्रयोग कर रहा हूं ।


27
स्टैक एक्सचेंज के लिए बैच प्रोग्रामिंग ऑन-टॉपिक है।
हैरी जॉनसन 1

12
अच्छा प्रश्न। +1। मध्यस्थ बहुत गुस्से में हैं ... इसके अलावा मेरे पास एक और अच्छा जवाब है, लेकिन सवाल बंद हो गया (
गावेंको

मैं इसके बजाय इस RunAsService का उपयोग करता हूं: runasservice.com । यह बहुत, उपयोग करने के लिए बहुत सरल है। कोई XML कॉन्फ़िगरेशन बकवास नहीं है। मूल रूप से यह आपको केवल RunAsService.exe निष्पादन योग्य देता है, जो किसी भी कंसोल एप्लिकेशन को कमांड लाइन तर्कों के साथ एक सेवा के रूप में लपेटता है। मैं इसे सेवाओं के रूप में Cygwin बैश स्क्रिप्ट चलाने के लिए उपयोग करता हूँ !!! दुर्भाग्य से, यह सरल उपकरण बंद-स्रोत प्रतीत होता है।
काज

8
"प्रोग्रामर द्वारा आमतौर पर उपयोग किए जाने वाले सॉफ़्टवेयर टूल" के आधार पर फिर से खोलने के लिए नामांकित। जो इस सवाल का जवाब जरूर है। यह भी ध्यान में रखें कि "विंडोज़ स्टार्ट बैच फ़ाइल" एक सेवा के रूप में खोजते समय यह पहला Google परिणाम है, इसलिए क्या यह संकीर्ण दायरे में है कि कुछ मॉडरेटर्स विषय 'विषय' पर है, शेष दुनिया को लगता है कि यह है। मैं यहाँ कुत्ते के ऊपर व्यावहारिकता के लिए वोट देता हूँ।
एडम कैमरन

ऐसा ही एक सवाल serverfault में पाया जा सकता serverfault.com/questions/54676/...
स्टीफन क्वान

जवाबों:


151

एनएसएसएम पूरी तरह से स्वतंत्र और हाइपर-आसान है, प्रशासक के रूप में कमांड प्रॉम्प्ट / टर्मिनल चल रहा है:

nssm install "YourCoolServiceNameLabel"

फिर एक संवाद दिखाई देगा जिससे आप चुन सकते हैं कि वह फ़ाइल कहाँ है जिसे आप चलाना चाहते हैं।

स्थापना रद्द करने के लिए

nssm remove "YourCoolServiceNameLabel"

25
+1 यह कभी नहीं सुना, लेकिन यह बहुत अच्छा है। एनएसएसएम वास्तव में चूसना नहीं करता है!
बायरन व्हिटलॉक

1
एक सेवा को स्थापित करने में मुझे 2 मिनट का समय लगा
बेन वाइल्ड

3
@ जूनियर एम थैंक्स !! तुमने मुझे बचाया। मैंने इसके लिए 4 घंटे खर्च किए हैं। धन्यवाद!!
verystrongjoe

2
क्या आप जानते हैं कि nssmपॉपअप डेटा प्रविष्टि से बचने के लिए इनपुट पर सभी आवश्यक आर्ग्स देने का कोई तरीका है - मैं प्रक्रिया को स्वचालित करने की कोशिश कर रहा हूं?
उभयचर

1
NSSM GDATA एंटीवायरस द्वारा हमारे कुछ ग्राहकों को डिलीट करता रहता है। हाँ, मुझे पता है, श्वेतसूची ... लेकिन ग्राहक उनके लिए अच्छा नहीं है। यही दुखद सच है।
ड्रीम्सस्पेस अध्यक्ष

61

बस इसे एक शेड्यूल्ड टास्क के रूप में सेट क्यों नहीं किया गया जो स्टार्ट अप पर चलने वाला है?


1
मेरे पास कई बैच फाइलें हैं, जो रॉबोकॉपी के माध्यम से बैकअप लेती हैं, जो मैं एक अनुसूचित 2003 सर्वर पर चलने वाले अनुसूचित कार्य (कंट्रोल पैनल पर जाएं, अनुसूचित कार्य) के माध्यम से शुरू करता हूं। एक इलाज काम करता है ...
एसएलएल

बस एक स्क्रिप्ट के साथ हमने अपनी बैकअप सेवा की निगरानी के लिए इसका इस्तेमाल किया। यह एक सम्मोहन की तरह काम करता है।
संगीत 2 साल का

1
यह सबसे अच्छा समाधान imo है। किसी तीसरे पक्ष के सॉफ़्टवेयर की आवश्यकता नहीं है और कोई कमांड लाइन इंटरफ़ेस नहीं है। प्लस कार्य शेड्यूलर विकल्पों में से चलाता के लिए आदि बहुत सारे, शर्तों, प्रदान करता है
देव

3
अब काम करता है कि मैं यह पता लगाता हूं: जब कार्य स्टार्टअप पर चलता है ("रन के साथ उपयोगकर्ता लॉग इन है या नहीं")% UserProfile% C है: \ Users \ Default \ किसी भी समय यह अपेक्षित C: \ Users \ होगा ExpectedUser \। कुछ .bat फ़ाइलों के लिए रहस्यमय विफलताएं पैदा कर सकता है जो अन्य निर्धारित कार्यों में ठीक काम करती हैं।
181 बजे उपयोगकर्ता 1754036

2
शेड्यूल किए गए कार्य कुख्यात रूप से अविश्वसनीय हैं - मैं वास्तव में इस सवाल के कारण आया हूं कि उन सभी समस्याओं के कारण जो मुझे बिना किसी स्पष्ट कारण के समय पर लॉन्च नहीं करने वाले कार्यों के साथ हुई हैं।

22

ऐसा करने के लिए एक विंडोज़ cmd में बनाया गया है: sc create । Nssm के रूप में फैंसी के रूप में नहीं, लेकिन आपको सॉफ़्टवेयर का एक अतिरिक्त टुकड़ा डाउनलोड करने की आवश्यकता नहीं है।

sc create "ServiceName" start= demand displayname= "DisplayName" binpath= [path to .bat file]

ध्यान दें

  • start = मांग का अर्थ है कि आपको स्वयं सेवा शुरू करनी होगी
  • व्हाट्सएप के बाद जरूरी है =
  • मैंने सेवा शुरू करने में एक त्रुटि का सामना किया था कि सेवा समय पर ढंग से जवाब नहीं देती थी, लेकिन यह स्पष्ट था कि सेवा ने सफलतापूर्वक .bat चलाया था। अभी तक इसमें खोदा नहीं गया था, लेकिन इस धागे ने एक ही चीज़ का अनुभव किया और सेवा को स्थापित करने के लिए nssm का उपयोग करके इसे हल किया।

4
Windows को .bat फ़ाइलों को सेवाओं के रूप में नहीं चलाया जाता है।
पर्किंस

@ पर्किन्स - कल एक दो मशीनों पर काम कर रहा था। क्या आप कुछ विशिष्ट अनुभव कर रहे हैं? मैंने एक त्रुटि का सामना किया था कि सेवा ने इसे शुरू में समय पर ढंग से जवाब नहीं दिया था, लेकिन .bat फ़ाइल Kibana नोड.js सर्वर को स्टार्टअप करने के लिए थी और यह त्रुटि के साथ भी सफलतापूर्वक चल रहा था। इस धागे में दोस्तों को एक ही बात का अनुभव हो रहा था लेकिन nssm के साथ नहीं था। stackoverflow.com/a/40130630/885535
w00ngy

2
मेरे मामले में बैच फ़ाइल बनाने वाली फ़ाइलें बनाई नहीं जा रही हैं और प्रोग्राम नहीं चल रहे हैं, इसलिए मुझे यह मानकर चलना होगा कि यह इसे शुरू नहीं कर रहा है। मैं इसके बजाय cmd.exe / C <बैचफाइल> चलाने के लिए सेवा बनाकर इसके चारों ओर काम करने में कामयाब रहा। ध्यान दें कि मैं विंडोज 10 का उपयोग कर रहा हूं, इसलिए यह कुछ नई "सुरक्षा" चीज हो सकती है।
पर्किन्स

@Perkins मैं सिर्फ यह win10 1803 पर कोई समस्या नहीं चल रही है, मेरे नोड शुरू होता है। जेएस सर्वर। Cmd या पावरशेल से बुलाए जाने पर क्या बैट फाइल फाइल बनाता है और सेवाएं चलाता है? जब आप सेवा शुरू करने जाते हैं तो क्या आपको कोई मेसो बॉक्स मिलता है? क्या आपकी सेवा को उन निर्देशिकाओं की अनुमति है? आप स्थानीय लॉगफ़ाइल में लिखकर बल्ले से लॉगिंग में कुछ त्रुटि जोड़ सकते हैं, देखें कि क्या यह काम कर रहा है।
15

1
" त्रुटि 1053 प्राप्त करें : सेवा ने समय पर फैशन में शुरुआत या नियंत्रण अनुरोध का जवाब नहीं दिया। "
एलेक्स क्लॉस

5

अतिरिक्त सॉफ़्टवेयर की कोई आवश्यकता नहीं है। कार्य अनुसूचक का उपयोग करें -> कार्य बनाएं -> छिपा हुआ। छिपा हुआ चेकबॉक्स नीचे बाएं कोने में है। कार्य को लॉगिन पर ट्रिगर करने के लिए सेट करें (या जो भी शर्त आपको पसंद हो) और कार्य टैब में कार्य चुनें। इसे छिपाकर चलाने से यह सुनिश्चित होता है कि कार्य सेवा की तरह पृष्ठभूमि में चुपचाप चलता है।

ध्यान दें कि आपको "उपयोगकर्ता लॉग इन है या नहीं" चलाने के लिए प्रोग्राम भी सेट करना होगा या प्रोग्राम अभी भी अग्रभूमि में चलेगा।


3

जैसा कि डौग करी कहते हैं कि RunAsService का उपयोग करें।

मेरे पिछले अनुभव से आपको याद रखना चाहिए कि आप जो सेवा करेंगे, वह उत्पन्न होगी

  • पर्यावरण चर का पूरी तरह से अलग सेट है
  • अधिकारों / अनुमतियों के मुद्दों के लिए सावधानीपूर्वक निरीक्षण किया जाना चाहिए
  • यदि यह किसी भी तरह के इनपुट के लिए डायलॉग खोलता है तो तबाही मचा सकता है

यकीन नहीं होता है कि अगर अंतिम एक अभी भी लागू होता है ... यह एक परियोजना में एक बड़ी रात की घोड़ी थी जो मैंने कुछ समय पहले काम किया था।


3

हालांकि यह मुफ़्त नहीं है (लेकिन $ 39), फायरडैम ने मेरे लिए इतना अच्छा काम किया है, मुझे इसकी सिफारिश करनी होगी। यह आपकी बैच फ़ाइल को चलाएगा, लेकिन इसमें शेड्यूलिंग, सर्विस अप मॉनिटरिंग, जीयूआई या एक्सएमएल आधारित सेवाओं, निर्भरता, पर्यावरण चर और लॉग प्रबंधन जैसे अतिरिक्त और बहुत उपयोगी कार्यक्षमता का भार है।

मैंने JBoss एप्लिकेशन सर्वर ( run.bat ) को लॉन्च करने के लिए FireDaemon का उपयोग करना शुरू कर दिया, लेकिन कुछ ही समय बाद महसूस किया कि FireDaemon कॉन्फ़िगरेशन क्षमताओं की समृद्धि ने मुझे बैच फ़ाइल को खोदने और Fireaaemon सेवा परिभाषा में इसके आदेशों को फिर से बनाने की अनुमति दी।

ट्रिनिटी नामक एक सुपर फायरडैम भी है जिसे आप देख सकते हैं कि क्या आपके पास बड़ी संख्या में विंडोज सर्वर हैं, जिन पर इस सेवा (या तकनीकी रूप से, किसी भी सेवा) को प्रबंधित करने के लिए।


2

Windows 2019 सर्वर पर, आप इन आदेशों के साथ एक Minecraft जावा सर्वर चला सकते हैं:

sc create minecraft-server DisplayName = "minecraft-server" binpath = "cmd.exe /CC:\Users\Administrator\Desktop\rungui1151.lnk" type = own start - auto

.Lnk फ़ाइल बैच फ़ाइल के लिए एक मानक विंडोज़ शॉर्टकट है।

--- .bat फ़ाइल शुरू होती है ---

java -Xmx40960M -Xms40960M -d64 -jar minecraft_server.1.15.1.jar

--- .bat फ़ाइल समाप्त होती है ---

यह सब क्योंकि:

सेवा एक फ़ोल्डर में शुरू करने के लिए कैसे पता नहीं है,

cmd.exe यह नहीं जानता कि फ़ोल्डर में कैसे शुरू किया जाए

सेवा शुरू करने से "समय पर ढंग" त्रुटि उत्पन्न होगी, लेकिन लॉग फ़ाइल से पता चलता है कि सर्वर चल रहा है।

यदि आपको सर्वर को बंद करने की आवश्यकता है, तो बस कार्य प्रबंधक में जाएं और सर्वर जावा को पृष्ठभूमि प्रक्रियाओं में ढूंढें और इसे समाप्त करें, या खेल में सर्वर को / स्टॉप कमांड, या अन्य प्रोग्राम / सर्वर का उपयोग करके समाप्त करें, विधियों का उपयोग करें सर्वर के लिए प्रासंगिक है।


यह प्रश्न का उत्तर प्रदान नहीं करता है। एक बार आपके पास पर्याप्त प्रतिष्ठा होने पर आप किसी भी पोस्ट पर टिप्पणी करने में सक्षम होंगे ; इसके बजाय, ऐसे उत्तर प्रदान करें जिन्हें पूछने वाले से स्पष्टीकरण की आवश्यकता न हो । - रिव्यू से
जेरेमी जे स्टारचर

1
यदि आप इसे ठीक से पढ़ते हैं, तो आप देखेंगे कि इसमें सही उत्तर है, जो एक उदाहरण के लिए प्रासंगिक है
Goofyseeker311

0

AlwaysUp आसानी से एक सेवा के रूप में अपने बैच फ़ाइल चलेंगे। यह FireDaemon के समान है (ऊपर उल्लेख किया गया है) और मुफ्त नहीं है, लेकिन आप एक पेशेवर वातावरण में संपत्ति होने के लिए समृद्ध सुविधा सेट कर सकते हैं।

सौभाग्य!

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