실행 파일이 주어지면 시작할 때 시작하는 Windows 서비스를 만드는 빠른 방법이 있습니까?
답변
실행 파일에서 Windows 서비스를 만들려면 다음을 사용하십시오 sc.exe
.
sc.exe create <new_service_name> binPath= "<path_to_the_service_executable>"
실제 exe
경로 는 따옴표로 묶어야 하며 뒤에 공백이 있어야합니다 binPath=
.
이 sc
명령 에 대한 자세한 내용 은 Microsoft KB251192에서 찾을 수 있습니다 .
실행 파일에 대해서만 작동하지 않습니다. 실행 파일은 Windows 서비스 여야합니다 ( 예 : ServiceMain 구현 ). 비 서비스 실행 파일을 서비스로 등록하면 서비스를 시작하려고 할 때 다음 오류가 발생합니다.
오류 1053 : 서비스가 시작 또는 제어 요청에 적시에 응답하지 않았습니다.
서비스가 아닌 임의의 실행 파일로 Windows 서비스를 만들 수있는 도구가 있습니다. 이러한 도구의 예는 다른 대답을 참조하십시오.
답변
NSSM ( non- Sucking Service Manager )을 사용하여 .BAT 또는 .EXE 파일을 서비스로 실행하십시오.
- 1 단계 : NSSM 다운로드
- 2 단계 :
nssm.exe install [serviceName]
- 3 단계 : 실행 파일을 찾는 데 사용할 GUI가 열립니다.
답변
(케빈 통) 답변 연장.
1 단계 : nssm-2.24.zip 다운로드 및 압축 해제
2 단계 : 명령 행 유형에서 :
C:\> nssm.exe install [servicename]
아래와 같이 GUI (예 : UT2003 서버)를 연 다음 간단히 찾아보십시오 : yourapplication.exe
https://nssm.cc/usage 에 대한 자세한 정보
답변
기존의 많은 답변에는 설치시 사람의 개입이 포함됩니다. 오류가 발생하기 쉬운 프로세스 일 수 있습니다. 많은 실행 파일을 서비스로 설치하려는 경우 마지막으로 할 일은 설치시 수동으로 수행하는 것입니다.
위에서 설명한 시나리오 를 위해 실행 파일을 서비스로 설치하는 명령 줄 도구 인 serman을 만들었습니다 . 쓰기 (및 한 번만 쓰기)는 실행 파일과 함께 간단한 서비스 구성 파일입니다. 운영
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>
서비스 이름에 공백이 있으면 “따옴표”로 묶으십시오.
