এক্সিকিউটেবল থেকে উইন্ডোজ পরিষেবা তৈরি করুন


349

এক্সিকিউটেবল ফাইল দেওয়া, একটি উইন্ডোজ পরিষেবা তৈরি করার কোনও দ্রুত উপায় আছে যা চালু হওয়ার সাথে সাথে এটি চালু করে?


8
এটি কীভাবে অর্জন করা যায় সে সম্পর্কে মাইক্রোসফ্টের নির্দেশাবলী এখানে
পাইআরএক্স

উত্তর:


460

এক্সিকিউটেবল থেকে উইন্ডোজ পরিষেবা তৈরি করতে, আপনি ব্যবহার করতে পারেন sc.exe:

sc.exe create <new_service_name> binPath= "<path_to_the_service_executable>"

আপনার অবশ্যই আসল exeপথের চারপাশে উদ্ধৃতি চিহ্ন এবং এর পরে একটি স্থান থাকতে হবে binPath=

scকমান্ডের আরও তথ্য মাইক্রোসফ্ট KB251192 এ পাওয়া যাবে

মনে রাখবেন যে এটি কেবল কোনও এক্সিকিউটেবলের জন্য কাজ করবে না: এক্সিকিউটেবলটি অবশ্যই একটি উইন্ডোজ পরিষেবা হতে হবে ( যেমন সার্ভিস মাইন প্রয়োগ করুন ) implement পরিষেবা হিসাবে নির্বাহযোগ্য অ-পরিষেবা নিবন্ধকরণ করার সময়, পরিষেবাটি শুরু করার চেষ্টা করার পরে আপনি নিম্নলিখিত ত্রুটিটি পাবেন:

ত্রুটি 1053: পরিষেবা সময়মতো ফ্যাশনে শুরু বা নিয়ন্ত্রণ অনুরোধের প্রতিক্রিয়া জানায় না।

এমন সরঞ্জাম রয়েছে যা নির্বিচারে, অ-পরিষেবা নির্বাহী থেকে উইন্ডোজ পরিষেবা তৈরি করতে পারে, এই জাতীয় সরঞ্জামগুলির উদাহরণগুলির জন্য অন্যান্য উত্তরগুলি দেখুন।


11
এই কমান্ডটি কাজ করার জন্য আপনাকে (প্রায় অবশ্যই) প্রশাসক হিসাবে কমান্ড প্রম্পটটি চালাতে হবে
Jeutnarg

2
পথটিও পুরোপুরি যোগ্য পাথ হওয়া দরকার - আপেক্ষিক পথটি ব্যবহার করে আমার পরিষেবা শুরু করতে পারিনি।
রানওফফিশিপি

4
binpath=ডাবল কোট দিয়ে এক্সিকিউটেবল পাথটি ঘিরে রাখার পাশাপাশি স্থানটি সম্পূর্ণ ভুল, কমপক্ষে উইন্ডোজ ১০ এর জন্য, উদ্ধৃতিটি প্রয়োজনীয় এবং যদি কেবল সেই পথটিতে সাদা বর্ণের মতো বিশেষ অক্ষর থাকে। এছাড়াও, কেসিং (লো / আপার / মিক্সড-কেস) কোথাও কিছু যায় আসে না, ভেরিয়েবল নামেও খুব বেশি গুরুত্বপূর্ণ এবং displayname="my service"প্রথম সারিতে ( Name) এ দেখার জন্য একটি পরিষেবা তৈরি করার সময় কমান্ডলাইনে পাস করার জন্য আরও একটি গুডি services.msc

2
এর পরে স্থানটি binPath=আমার জন্য উইন্ডোজ
on-

242

একটি পরিষেবা হিসাবে .BAT বা যে কোনও .EXE ফাইল চালানোর জন্য এনএসএসএম ( নন-সাকিং সার্ভিস ম্যানেজার ) ব্যবহার করুন ।

http://nssm.cc/

  • পদক্ষেপ 1 : এনএসএসএম ডাউনলোড করুন
  • পদক্ষেপ 2 : এর সাথে আপনার সেভিসটি ইনস্টল করুনnssm.exe install [serviceName]
  • পদক্ষেপ 3 : এটি একটি জিইউআই খুলবে যা আপনি আপনার নির্বাহযোগ্যকে সনাক্ত করতে ব্যবহার করবেন

6
সর্বকালের সেরা পরিষেবা পরিচালক। এমনকি আমি এনএসএসএম ব্যবহার করে একটি সার্ভিস হিসাবে ইনস্টল করতে প্লেক্সওয়াচ পেতে সক্ষম হয়েছি।
অনুজ্ঞাসূচক

2
এই সেট কি চিরতরে একটি পরিষেবা? উইন্ডোজের সার্ভিস চালু হয়ে গেলে কি সার্ভিস শুরু হবে? এছাড়াও আমি কীভাবে ব্যবহারকারীর মিথস্ক্রিয়া ছাড়াই এটি করতে পারি? কোনও স্ক্রিপ্ট বা কোনও ধরণের কোড?
জন ডেমেট্রিউ

9
এটি একেবারে দুর্দান্ত, আমি আশা করি আমি প্রথমটির পরিবর্তে এই উত্তরটি গ্রহণ করতে পারতাম, :-(
জার্মান লেটারের

2
আমি সার্ভারে একটি পরিষেবা হিসাবে ড্রপবক্স চালাতে পারি। একেবারে একটি চুষে না দেওয়া সরঞ্জাম!
ব্যারি গুভেনকায়া

1
এনএসএম নিয়ে কাজ করতে সক্ষম হতে বা এটি একটি সাধারণ এক্সি ফাইল হতে পারে, যেমন, এক্সি ফাইলটি কী উইন্ডোজ পরিষেবা প্রকল্প হতে হবে? কারণ আমি যখন এনএসএম স্টার্টটি ব্যবহার করি [সার্ভিসনেম] এটি ত্রুটি দেখায় যেমন উইন্ডোজ পরিষেবা চালানো যায় না কমান্ড প্রম্পট ইত্যাদি
সঞ্জীব

92

সম্প্রসারণ (কেভিন টং) উত্তর।

পদক্ষেপ 1: ডাউনলোড করুন এবং আনজিপ করুন এনএসএমএম ২.২.২৪.জিপ

পদক্ষেপ 2: কমান্ড লাইন টাইপ থেকে:

C:\> nssm.exe install [servicename]

এটি নীচের মতো জিইউআই খুলবে (উদাহরণটি ইউটি ২০০৩ সার্ভার), তারপরে কেবল এটি ব্রাউজ করুন: yourapplication.exe

এখানে চিত্র বর্ণনা লিখুন

আরও তথ্য: https://nssm.cc/usage


4
সঠিক সিনট্যাক্স nssm.exe install [serviceName]। এই সমাধানটি কাজ করে তবে আপনার যদি জিইউআই অ্যাপ্লিকেশন থাকে তবে এটি উইন সেরিভার ২০০3 এ কাজ করবে না। আপনি যদি পরে এটি সরাতে চান তবে ব্যবহার করুনnssm.exe remove [youservicename]
হামদ খান

1
আমি এনজিনেক্সের রেফারেন্সটি ধরে নিচ্ছি কারণ এটি সেই নির্দিষ্ট প্রোগ্রাম যা আপনি পরিষেবা হিসাবে চালাতে চান? উপরে আমি এইচএমডি-র মন্তব্য না পাওয়া পর্যন্ত আমি ভেবেছিলাম আপনি এনগিনেক্স বা কোনও কিছু ইনস্টল করার জন্য প্রয়োজনীয় নির্ভরতা বলে বোঝিয়ে সাহায্য করার চেষ্টা করছেন ... তবে জিইউআইতে দেখে মনে হচ্ছে আপনি এনগিনেক্স ইনস্টল করছেন না, আপনি অবাস্তব টুর্নামেন্ট ইনস্টল করছেন? সার্ভার? কেবল উদাহরণটি অসঙ্গতিপূর্ণ এবং সম্ভাব্য বিভ্রান্তিকর বিষয়টি উল্লেখ করে। একটি সাধারণ "ধরুন আপনি একটি পরিষেবা হিসাবে এনজিনেক্স ইনস্টল করতে চেয়েছিলেন, তবে এটি এর মতো দেখায়:" সহায়তা করবে।
flutefreak7

@ flutefreak7 হ্যাঁ nginxপ্রয়োজনীয় এবং বিভ্রান্তিমূলক নয়। কমান্ড এটি ছাড়াও কাজ করবে। আপনি যদি কমান্ড প্রম্পট থেকে পরিষেবার নাম সরবরাহ করতে চান তবে এটি alচ্ছিক প্যারামিটার।
হামাদ খান

1
আমি যখন এনএসএমএম ব্যবহার করার চেষ্টা করি তখন আমার উইন্ডোজ ফর্মগুলি চালু আছে তবে ফর্মটি দেখানো হয় না ... কেন?
রাডেনকো জেক

এটি আপনার অ্যাপ্লিকেশনটিকে উইন্ডোজ পরিষেবা হিসাবে চালাচ্ছে, বেশিরভাগ তারা ব্যাকএন্ডের জন্য। এটি অন্য শিকড় / অ্যাডমিন ব্যবহারকারী নাম হিসাবে এটি চলমানও হতে পারে। আপনাকে এটি পরীক্ষা করে দেখতে হবে এছাড়াও আরও তথ্য আপনি এখানে পরীক্ষা করতে পারেন: nssm.cc/usage

16

প্রচুর বিদ্যমান উত্তরের মধ্যে ইনস্টলের সময় মানুষের হস্তক্ষেপ অন্তর্ভুক্ত রয়েছে। এটি একটি ত্রুটি-প্রবণ প্রক্রিয়া হতে পারে। আপনার যদি অনেক এক্সিকিউটেবলগুলি পরিষেবা হিসাবে ইনস্টল করতে চান, আপনি সর্বশেষ কাজটি করতে চান তা হ'ল ইনস্টল করার সময় ম্যানুয়ালি করে।

উপরোক্ত বর্ণিত দৃশ্যের দিকে, আমি সার্মান তৈরি করেছি , একটি কমান্ড লাইন সরঞ্জাম হিসাবে একটি এক্সিকিউটেবলকে পরিষেবা হিসাবে ইনস্টল করতে। আপনাকে যা লিখতে হবে (এবং কেবল একবার লিখতে হবে) এটি কার্যকর করার সাথে সাথে একটি সাধারণ সার্ভিস কনফিগারেশন ফাইল। চালান

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>

9

এই অতিরিক্তগুলি কার্যকর প্রমাণিত হয় .. প্রশাসক হিসাবে কার্যকর করা দরকার

sc create  <service_name> binpath=<binary_path>
sc stop    <service_name>
sc queryex <service_name>
sc delete  <service_name>

যদি আপনার পরিষেবার নামের কোনও স্থান থাকে তবে "কোটস" এ সংযুক্ত করুন।


আমার উইন 2003 sc.exe 5.2.3790.3959, বা এম-এফ 1
ব্যবহারকারী 6698332

1
"ইনস্টল" এর পরিবর্তে "তৈরি করুন" ব্যবহার করুন। sc create <service_name> binpath= <binary_path>
CSquared

4

আমি যে জন্য একটি ভাল পণ্য পরীক্ষা করেছি: AlwaysUp । নিখরচায় নয় তবে তাদের একটি 30 দিনের ট্রায়াল পিরিয়ড রয়েছে যাতে আপনি এটি ব্যবহার করে দেখতে পারেন ...

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.