क्या कोई त्वरित तरीका है, एक निष्पादन योग्य फ़ाइल दी गई है, एक विंडोज सेवा बनाएं जो शुरू होने पर इसे लॉन्च करता है?
क्या कोई त्वरित तरीका है, एक निष्पादन योग्य फ़ाइल दी गई है, एक विंडोज सेवा बनाएं जो शुरू होने पर इसे लॉन्च करता है?
जवाबों:
एक निष्पादन योग्य से विंडोज सेवा बनाने के लिए, आप इसका उपयोग कर सकते हैं sc.exe
:
sc.exe create <new_service_name> binPath= "<path_to_the_service_executable>"
आपके पास वास्तविक exe
पथ के आसपास उद्धरण चिह्न और इसके बाद का स्थान होना चाहिए binPath=
।
sc
आदेश पर अधिक जानकारी Microsoft KB251192 में पाई जा सकती है ।
ध्यान दें कि यह सिर्फ किसी भी निष्पादन योग्य के लिए काम नहीं करेगा: निष्पादन योग्य एक विंडोज सर्विस ( यानी सेवामाइन लागू करें ) होना चाहिए । सेवा के रूप में एक गैर-सेवा निष्पादन योग्य को पंजीकृत करते समय, आपको सेवा शुरू करने की कोशिश में निम्नलिखित त्रुटि मिलेगी:
त्रुटि 1053: सेवा ने समय पर फैशन में शुरू या नियंत्रण अनुरोध का जवाब नहीं दिया।
ऐसे उपकरण हैं जो मनमाने ढंग से, गैर-सेवा निष्पादनयोग्य से विंडोज सेवा बना सकते हैं, ऐसे उपकरणों के उदाहरणों के लिए अन्य उत्तर देखें।
binpath=
डबल कोट्स के साथ निष्पादन योग्य पथ को घेरने के साथ अंतरिक्ष पूरी तरह से गलत है, कम से कम विंडोज़ के लिए 10. उद्धरण की आवश्यकता है अगर और केवल यदि पथ में विशेष वर्ण जैसे व्हॉट्सएप शामिल हैं। इसके अलावा, आवरण (लोव / अपर / मिक्स्ड-केस) कहीं भी फर्क नहीं पड़ता है, चर नामों में भी, और displayname="my service"
पहली पंक्ति ( Name
) के रूप में देखने के लिए एक सेवा बनाते समय कमांडलाइन पर पास करने के लिए एक और गुडी है services.msc
।
binPath=
का स्थान मेरे लिए विंडोज 7 पर आवश्यक था, लेकिन विंडोज 10 पर नहीं
एक सेवा के रूप में .BAT या किसी भी .EXE फ़ाइल को चलाने के लिए NSSM ( नॉन-सकिंग सर्विस मैनेजर ) का उपयोग करें ।
nssm.exe install [serviceName]
विस्तार (केविन टोंग) जवाब।
चरण 1: डाउनलोड और खोलना nssm-2.24.zip
चरण 2: कमांड लाइन प्रकार से:
C:\> nssm.exe install [servicename]
यह नीचे के रूप में GUI खोल देगा (उदाहरण UT2003 सर्वर है), तो बस इसे ब्राउज़ करें: yourapplication.exe
अधिक जानकारी: https://nssm.cc/usage
nssm.exe install [serviceName]
। यह समाधान काम करता है लेकिन अगर आपके पास GUI अनुप्रयोग है, तो यह Win Serever2003 पर काम नहीं करेगा। यदि आप बाद में इसे हटाना चाहते हैं, तो उपयोग करेंnssm.exe remove [youservicename]
nginx
जरूरी नहीं है और भ्रामक है। कमांड इसके बिना भी काम करेगा। यदि आप कमांड प्रॉम्प्ट से सेवा का नाम देना चाहते हैं तो यह वैकल्पिक पैरामीटर है।
कई मौजूदा उत्तरों में स्थापित समय पर मानवीय हस्तक्षेप शामिल है। यह एक त्रुटि-प्रवण प्रक्रिया हो सकती है। यदि आपके पास कई निष्पादक हैं जिन्हें सेवाओं के रूप में स्थापित किया जाना है, तो आखिरी चीज जो आप करना चाहते हैं, उन्हें मैन्युअल रूप से स्थापित समय पर करना है।
ऊपर वर्णित परिदृश्य की ओर, मैंने सेवा के रूप में एक निष्पादन योग्य स्थापित करने के लिए एक कमांड लाइन टूल सरमन बनाया । आपको केवल लिखने की आवश्यकता है (और केवल एक बार लिखना) आपके निष्पादन योग्य के साथ-साथ एक सरल सेवा कॉन्फ़िगरेशन फ़ाइल है। Daud
serman install <path_to_config_file>
सेवा स्थापित करेगा। stdout
और stderr
सभी लॉग इन हैं। अधिक जानकारी के लिए, परियोजना की वेबसाइट देखें ।
एक कामकाजी कॉन्फ़िगरेशन फ़ाइल बहुत सरल है, जैसा कि नीचे दिखाया गया है। लेकिन इसमें कई उपयोगी विशेषताएं भी हैं जैसे कि <env>
और <persistent_env>
नीचे।
<service>
<id>hello</id>
<name>hello</name>
<description>This service runs the hello application</description>
<executable>node.exe</executable>
<!--
{{dir}} will be expanded to the containing directory of your
config file, which is normally where your executable locates
-->
<arguments>"{{dir}}\hello.js"</arguments>
<logmode>rotate</logmode>
<!-- OPTIONAL FEATURE:
NODE_ENV=production will be an environment variable
available to your application, but not visible outside
of your application
-->
<env name="NODE_ENV" value="production"/>
<!-- OPTIONAL FEATURE:
FOO_SERVICE_PORT=8989 will be persisted as an environment
variable to the system.
-->
<persistent_env name="FOO_SERVICE_PORT" value="8989" />
</service>
ये अतिरिक्त उपयोगी साबित होते हैं .. एक प्रशासक के रूप में निष्पादित किए जाने की आवश्यकता है
sc create <service_name> binpath=<binary_path>
sc stop <service_name>
sc queryex <service_name>
sc delete <service_name>
यदि आपके सेवा नाम में कोई स्थान है, तो "उद्धरण" में संलग्न करें।
sc create <service_name> binpath= <binary_path>
आप सर्विस क्रिएट \ edit \ डिलीट ऑपरेशंस के लिए मेरी छोटी फ्री यूटिलिटी देख सकते हैं। यहाँ उदाहरण बनाएँ:
सेवा पर जाएँ -> संशोधित -> बनाएँ
निष्पादन योग्य फ़ाइल (Google ड्राइव): [डाउनलोड]
स्रोत कोड: [डाउनलोड]
ब्लॉग पोस्ट: [BlogLink]
सेवा संपादक वर्ग: WinServiceUtils.cs