API: Windows 서비스
Windows 서비스의 상태 확인, 시작, 중지 및 재시작 기능을 제공합니다.
C++ 등록: regService(js).
JsN.exe를 관리자 권한으로 실행해야 합니다.
가능한 서비스 상태
상태 (state) |
코드 (code) |
설명 |
|---|---|---|
"running" |
4 | 서비스가 실행 중입니다. |
"stopped" |
1 | 서비스가 중지되었습니다. |
"start_pending" |
2 | 시작 진행 중 |
"stop_pending" |
3 | 중지 진행 중 |
"paused" |
7 | 일시 중지됨 |
"pause_pending" |
6 | 일시 중지로 전환 중 |
"continue_pending" |
5 | 재개 중 |
"unknown" |
— | 알 수 없는 상태 |
svc_status
svc_status(name: string) → object
서비스의 현재 상태를 가져옵니다.
매개변수:
| 매개변수 | 유형 | 설명 |
|---|---|---|
name |
string | 서비스 시스템 이름 (표시 이름 아님) |
결과:
| 필드 | 유형 | 설명 |
|---|---|---|
state |
string | 위 표의 상태 |
code |
number | 숫자형 SERVICE_* 코드 (1–7) |
pid |
number | 서비스 프로세스 PID (실행 중이 아니면 0) |
error |
string | 오류 메시지 또는 "" |
예시:
let s = svc_status("MyService");
if (s.error) {
console.log("오류:", s.error);
} else {
console.log("상태:", s.state); // "running"
console.log("PID:", s.pid); // 4321
}
svc_start
svc_start(name: string) → object
서비스를 시작합니다.
매개변수:
| 매개변수 | 유형 | 설명 |
|---|---|---|
name |
string | 서비스 시스템 이름 |
결과:
| 필드 | 유형 | 설명 |
|---|---|---|
ok |
bool | true — 시작 명령이 성공적으로 전송됨 |
error |
string | 오류 메시지 또는 "" |
예시:
let r = svc_start("MyService");
if (r.ok) {
console.log("서비스가 시작 중입니다.");
} else {
console.log("시작 오류:", r.error);
}
svc_stop
svc_stop(name: string) → object
서비스를 중지합니다.
매개변수:
| 매개변수 | 유형 | 설명 |
|---|---|---|
name |
string | 서비스 시스템 이름 |
결과:
| 필드 | 유형 | 설명 |
|---|---|---|
ok |
bool | true — 중지 명령이 성공적으로 전송됨 |
error |
string | 오류 메시지 또는 "" |
예시:
let r = svc_stop("MyService");
if (r.ok) {
console.log("서비스가 중지 중입니다.");
} else {
console.log("중지 오류:", r.error);
}
svc_restart
svc_restart(name: string) → object
서비스를 재시작합니다: 중지 → 완료 대기 (최대 15초) → 시작.
매개변수:
| 매개변수 | 유형 | 설명 |
|---|---|---|
name |
string | 서비스 시스템 이름 |
결과:
| 필드 | 유형 | 설명 |
|---|---|---|
ok |
bool | true — 서비스가 성공적으로 재시작됨 |
error |
string | 오류 메시지 또는 "" |
예시:
let r = svc_restart("MyService");
if (r.ok) {
console.log("서비스가 재시작되었습니다.");
} else {
console.log("재시작 오류:", r.error);
}
전체 예시: 상태 확인 및 자동 재시작
let svcName = "MyService";
// 상태 확인
let s = svc_status(svcName);
if (s.error) {
console.log("[오류] 상태를 가져오지 못했습니다:", s.error);
} else if (s.state === "stopped") {
console.log("[경고] 서비스가 중지되었습니다. 시작 중...");
let r = svc_start(svcName);
console.log("결과:", r.ok ? "성공" : r.error);
} else if (s.state === "running") {
console.log("[성공] 서비스가 실행 중입니다. PID:", s.pid);
// 프로세스 응답 확인
let alive = proc_alive(s.pid);
if (!alive.responding) {
console.log("[경고] 프로세스가 응답하지 않습니다. 서비스를 재시작합니다...");
let r = svc_restart(svcName);
console.log("재시작:", r.ok ? "성공" : r.error);
}
} else {
console.log("[정보] 상태:", s.state);
}
서비스 시스템 이름 찾는 방법
시스템 이름(표시 이름 아님)은 다음에서 찾을 수 있습니다:
- PowerShell:
Get-Service | Where-Object { $_.DisplayName -like "*MyApp*" } | Select-Object Name - 작업 관리자: 서비스 탭 → 이름 열
- services.msc: 마우스 오른쪽 버튼 클릭 → 속성 → 서비스 이름 필드