1. 필수옵션
<id>myapp</id> (서비스의 ID입니다. Windows 내에서 고유한 이름이어야 합니다.) <name>MyApp Service</name> (표시되는 서비스의 이름입니다.) <description>This service</description> (서비스 설명입니다.) <executable>%BASE%\myExecutable.exe</executable> (실행파일의 경로입니다.) |
2. 설치
이 옵션은 설치에만 사용됩니다. 서비스 재설치 없이는 수정 내용이 영향을 받지 않습니다.
2-1 serviceaccount
<serviceaccount> <domain>YOURDOMAIN</domain> <user>useraccount</user> <password>Pa55w0rd</password> <allowservicelogon>true</allowservicelogon> </serviceaccount>
|
서비스를 실행할 계정을 정의합니다.
2-2 onfailure
실패 시 작업 순서를 정의합니다. 관리되는 실행 파일이 실패할 경우 수행될 기능입니다.
<onfailure action="restart" delay="10 sec"/> <onfailure action="restart" delay="20 sec"/> <onfailure action="reboot" /> |
지원되는 작업: restart, reboot, none
2-3 resetfailure
윈도우 서비스 failure를 reset 하는 빈도를 설정합니다.
기본값 : 1 day
<resetfailure>1 hour</resetfailure>
|
2. 실행 파일 관리
3-1 arguments
실행파일로 전달되어야 하는 인수를 설정합니다.
<arguments>-classpath c:\cygwin\home\ws\hello-world test.Main</arguments>
|
3-2 startarguments
시작 시 실행 파일로 전달될 인수를 설정합니다. 이미 지정된 경우 재정의 합니다.
<startarguments></startarguments>
|
3-3 workingdirectory
실행파일의 기본 작업경로를 설정합니다. 기본 값 : 서비스 wrapper 파일의 경로
<workingdirectory>C:\myApp\work</workingdirectory>
|
3-4 priority
프로세스의 우선순위를 설정합니다.
지원하는 값 : Normal, Idle, High, RealTime, BelowNormal, AboveNormal
기본 값 : Normal
<priority>Normal</priority> |
3-5 stoptimeout
강제로 kill하기 전 실행 파일을 정상적으로 종료할 때까지 기다릴 시간을 설정합니다.
기본값 : 15초
<stoptimeout>15 sec</stoptimeout> |
3-6 stopparentprocessfirst
자식 프로세스를 종료하기 전 부모 프로세스 종료 여부를 설정합니다.
기본값 : false
<stopparentprocessfirst>false</stopparentprocessfirst> |
3-7 stopexecutable
서비스 종료를 수행하는 실행파일의 경로를 설정합니다.
이 실행 파일은 'stoparguations'가 지정된 경우에만 사용됩니다.
이 옵션 없이 'stoparguations'가 정의된 경우 'execable'이 종료 파일로 사용됩니다.
<stopexecutable>%BASE%\stop.exe</stopexecutable> |
3-8 stoparguments
종료 중 실행 중지 실행 파일로 전달되어야 하는 추가 인수입니다.
또한 이 옵션을 사용하면 실행 중지 파일을 통해 실행 파일을 종료할 수 있습니다.
<stoparguments>-stop true</stoparguments>
|
3. 서비스 관리
4-1 startmode
서비스의 시작모드를 정의합니다.
지원가능모드 : Automatic, Manual, Boot, System
(System은 드라이버 서비스용으로만 지원됩니다.)
기본모드 : Automatic
<startmode>Automatic</startmode>
|
4-2 delayed/AutoStart
'startmode' 필드에 'Automatic'이 지정된 경우 지연된 자동 시작을 활성화합니다.
지원되는 플랫폼 버전 및 제한 사항에 대한 자세한 내용은 WinSW 설명서를 참조하십시오.
<delayedAutoStart/>
|
4-3 depend
이 서비스가 시작되기 전에 시작해야 하는 서비스를 지정합니다.
<depend>Eventlog</depend> <depend>W32Time</depend> |
4-4 waithint
중지 보류 작업에 필요한 예상 시간입니다. 지정된 시간이 경과하기 전에 서비스에서 SetServiceStatus 함수를 호출해야 합니다. 그렇지 않으면 서비스가 응답하지 않는 것으로 표시됩니다.
기본값 :15초
<waithint>15 sec</waithint>
|
4-5 sleeptime
서비스가 SetServiceStatus 함수를 호출하고 다음 호출을 수행하기 전 시간입니다.
예상되는 대기시간보다 오래 기다리지 않아도 됩니다. 예상 대기 시간의 10분의 1이 권장되지만 1초 이상 10초 이어야만 합니다.
기본값 : 1초
<sleeptime>1 sec</sleeptime> |
4-6 interactive
데스크탑과 상호 작용 여부를 나타냅니다.
<interactive/> |
4. 로깅
5-1 logpath
service wrapper 에서 생성할 모든 로그에 대한 사용자 지정 로그 디렉토리를 설정합니다.
기본값 : 실행파일이 있는 디렉토리
<logpath>%BASE%\logs</logpath> |
5-2 log mode
실행 파일이 생성한 로그에 대한 로깅 모드를 정의합니다.
지원되는 모드
* append - 기존 로그 갱신
* none - 로그를 디스크에 저장 안 함
* reset - 시작할 때 로그 파일 지우기
* roll - 크기에 따라 교체
* roll-by-time - 시간을 기준으로 로그 교체
* rotate - 크기, 로그 8개, 각각 10MB를 기준으로 로그를 교체합니다. 이 모드는 더 이상 사용되지 않습니다. "roll"을 사용하십시오.
기본 설정: append
<log mode="append"> <setting1/> <setting2/> </log> |
*모드설정 방법
Winsw는 시작하는 프로세스에서 stdout 및 stderr를 캡처하는 여러 가지 방법을 지원합니다.
Log directory <logpath> 요소는 로그 파일이 생성되는 디렉터리를 지정합니다. 이 요소가 없으면 구성 파일이 있는 동일한 디렉터리로 기본 설정됩니다.
Append mode (default) 이 모드에서는 myapp.out.log 및 myapp.err.log(여기서 myapp는 실행 파일의 기본 이름 및 구성 파일)가 생성되고 출력이 이러한 파일에 추가됩니다. 파일 크기가 상당히 커질 수 있습니다.
<log mode="append"/>
Reset mode 서비스가 시작될 때마다 이전 로그 파일이 잘리는 것을 제외하고 추가 모드와 유사합니다.
<log mode="reset"/>
Ignore mode 로그파일을 생성하지 않습니다. <log mode="none"/>
Rotate mode add 모드처럼 작동하지만 로그 파일이 설정된 크기보다 커지면 myapp.1.out.log, myapp.2.out.log 등으로 추가생성 됩니다. <sizeThreshold>는 로그파일의 용량을 KB(기본값: 10MB)로 지정하고 <keepFiles>는 유지할 로그 파일 수를 지정합니다(기본값: 8).
<log mode="roll-by-size"> <sizeThreshold>10240</sizeThreshold> <keepFiles>8</keepFiles> </log>
|
Rotate by time mode 크기를 임계값으로 사용하는 대신 기간을 임계값으로 사용하는 것을 제외하고 rotate 모드와 유사합니다. 이 구성은 로그 파일 이름으로 사용되는 타임스탬프 패턴을 지정하는 <pattern> 속성을 동반해야 합니다. 패턴 문자열의 구문은 DateTime으로 지정됩니다. 예를 들어 아래의 예에서 2013년 1월 1일의 로그는 myapp.20130101.out.log 및 myapp.20130101.er.log에 기록됩니다.
<log mode="roll-by-time"> <pattern>yyyyMMdd</pattern> </log>
Rotate by size and time mode 크기 rotate 모드와 시간 rotate 모드의 조합으로 작동하며, 로그 파일이 설정된 크기보다 커지면 제공된 [Pattern]을 사용하여 새로운 로그파일을 작성합니다.
<log mode="roll-by-size-time"> <sizeThreshold>10240</sizeThreshold> <pattern>yyyyMMdd</pattern> <autoRollAtTime>00:00:00</autoRollAtTime> <zipOlderThanNumDays>5</zipOlderThanNumDays> <zipDateFormat>yyyyMM</zipDateFormat> </log>
패턴 문자열의 구문은 DateTime으로 지정됩니다. 예를 들어 위의 예에서 2013년 1월 1일의 로그는 myapp.20130101.out.log 및 myapp.20130101.er.log에 기록됩니다. autoRollAtTime의 구문은 TimeSpan에 의해 지정됩니다. 예를 들어, 위의 예제에서는 파일을 처음부터 롤오버합니다.
zipOlderThanNumDays는 autoRollAtTime과 함께 사용할 수 있으며 보관할 파일의 일수를 제공합니다.
<log mode="roll-by-size-time"> <autoRollAtTime>00:00:00</autoRollAtTime> <zipOlderThanNumDays>5</zipOlderThanNumDays> </log>
zipDateFormat은 autoRollAtTime의 추측에만 사용할 수 있으며 DateTime을 사용하여 zip 파일 형식을 제공합니다. <log mode="roll-by-size-time"> <autoRollAtTime>00:00:00</autoRollAtTime> <zipDateFormat>yyyyMM</zipDateFormat> </log>
Error reporting Winsw는 아래의 WMI를 사용하므로 오류 코드를 종료 코드로 사용합니다. 종료 코드의 전체 목록은 Win32_Service 클래스의 MSDN 문서 작성 방법을 참조하십시오. winw가 서비스로 실행되면 보다 자세한 오류 정보가 Windows 이벤트 로그에 보고됩니다.
|
zipDateFormat은 autoRollAtTime의 추측에만 사용할 수 있으며 DateTime을 사용하여 zip 파일 형식을 제공합니다. <log mode="roll-by-size-time"> <autoRollAtTime>00:00:00</autoRollAtTime> <zipDateFormat>yyyyMM</zipDateFormat> </log>
Error reporting Winsw는 아래의 WMI를 사용하므로 오류 코드를 종료 코드로 사용합니다. 종료 코드의 전체 목록은 Win32_Service 클래스의 MSDN 문서 작성 방법을 참조하십시오. winw가 서비스로 실행되면 보다 자세한 오류 정보가 Windows 이벤트 로그에 보고됩니다.
|
5. 환경 변수
6-1 env
환경 변수를 설정하거나 재정의합니다. 최상위 수준에 여러 항목이 구성될 수 있습니다.
<env name="MY_TOOL_HOME" value="C:\etc\tools\myTool" /> <env name="LM_LICENSE_FILE" value="host1;host2" /> |
6-2 download
시작하기 전에 wrapper 가 수행할 다운로드 목록
<download from="http://www.google.com/" to="%BASE%\index.html" /> 오류 시 서비스 시작 다운로드 및 실패: <download from="http://www.nosuchhostexists.com/" to="%BASE%\dummy.html" failOnError="true"/>
연결이 암호화되지 않아 보안되지 않는 기본 인증의 예: <download from="http://example.com/some.dat" to="%BASE%\some.dat" auth="basic" unsecureAuth=“true” username="aUser" password=“aPassw0rd" /> Secure Basic authentication via HTTPS: <download from="https://example.com/some.dat" to="%BASE%\some.dat" auth="basic" username="aUser" password="aPassw0rd" />
대상 서버와 클라이언트가 동일한 도메인 또는 서버 도메인의 구성원이고 클라이언트 도메인이 트러스트를 가진 동일한 포리스트에 속하는 경우 보안 인증: <download from="https://example.com/some.dat" to="%BASE%\some.dat" auth="sspi" />
|
6. 기타
7-1 beeponshutdown
종료 시 서비스 신호음이 여부를 나타냅니다(OS에서 지원하는 경우).
<beeponshutdown/>
|
7. 확장
이 구성 섹션에서는 사용자 지정 확장을 지정할 수 있습니다.
자세한 내용은 여기를 참조하십시오.:
https://github.com/kohsuke/winsw/blob/master/doc/extensions/extensions.md
<extensions> Extension 1: id values must be unique <extension enabled="true" id="extension1" className="winsw.Plugins.SharedDirectoryMapper.SharedDirectoryMapper"> <mapping> <map enabled="false" label="N:" uncpath="\\UNC"/> <map enabled="false" label="M:" uncpath="\\UNC2"/> </mapping> </extension> ... </extensions>
|