JsN 구성 및 실행


실행

JsN.exe <path_to_config.json>

예시:

JsN.exe config.json
JsN.exe "C:\scripts\monitor.json"
JsN.exe TCa\CaMonitor.json

JSON 구성 형식

{
  "scriptfile": "./my_script.js",
  "arg": {
    "key1": "value1",
    "key2": 42,
    "key3": true,
    "nested": {
      "sub": "value"
    }
  }
}
필드 타입 설명
scriptfile 문자열 JS 파일 경로 (구성 파일 폴더 기준 상대 경로 또는 절대 경로)
arg 객체 스크립트 내에서 arg로 접근 가능한 임의의 데이터

스크립트에서 arg 접근

"arg"의 모든 내용은 JS에서 전역 객체 arg로 전달됩니다:

구성:

{
  "scriptfile": "./run.js",
  "arg": {
    "host": "smtp.office365.com",
    "port": 587,
    "recipients": ["admin@example.com", "ops@example.com"],
    "debug": false
  }
}

스크립트 run.js:

console.log(arg.host);               // "smtp.office365.com"
console.log(arg.port);               // 587
console.log(arg.recipients[0]);      // "admin@example.com"
console.log(arg.debug);              // false

scriptfile의 경로

scriptfile의 경로는 다음과 같을 수 있습니다:

형식 예시 동작
상대 경로 "./script.js" 구성 파일 폴더 기준 상대 경로
절대 경로 "C:\\scripts\\run.js" 절대 경로

권장사항: 구성 파일과 스크립트를 같은 폴더에 유지하고 "./script.js"를 사용하세요.


프로젝트 구조

권장 파일 구성:

my-project/
├── config.json        ← 구성 파일 (JsN.exe에 전달)
├── script.js          ← 메인 스크립트
└── lib/
    └── helpers.js     ← 도우미 함수 (필요한 경우)

다양한 작업을 위한 여러 구성

다른 매개변수를 가진 하나의 스크립트에 대해 여러 구성 파일을 가질 수 있습니다:

monitor/
├── monitor.js                  ← 공유 스크립트
├── monitor-production.json     ← 프로덕션용 구성
└── monitor-staging.json        ← 스테이징용 구성

monitor-production.json:

{
  "scriptfile": "./monitor.js",
  "arg": {
    "service": "MyApp_Production",
    "process": "myapp.exe",
    "notify_url": "https://hooks.slack.com/services/PROD/..."
  }
}

monitor-staging.json:

{
  "scriptfile": "./monitor.js",
  "arg": {
    "service": "MyApp_Staging",
    "process": "myapp.exe",
    "notify_url": "https://hooks.slack.com/services/STAG/..."
  }
}

예약 실행 (작업 스케줄러)

주기적 실행을 위해 Windows 작업 스케줄러를 사용하세요:

  1. 작업 스케줄러 열기 (taskschd.msc)
  2. 작업 생성 → 작업 → 새로 만들기
  3. 프로그램: C:\tools\JsN\JsN.exe
  4. 인수: C:\scripts\monitor\config.json
  5. 트리거 구성 (N분마다, 시작 시 등)

또는 PowerShell을 통해:

$action = New-ScheduledTaskAction `
    -Execute "C:\tools\JsN\JsN.exe" `
    -Argument "C:\scripts\monitor\config.json"

$trigger = New-ScheduledTaskTrigger -RepetitionInterval (New-TimeSpan -Minutes 5) -Once -At (Get-Date)

Register-ScheduledTask -TaskName "JsN-Monitor" -Action $action -Trigger $trigger -RunLevel Highest

관리자 권한으로 실행

svc_* 함수는 관리자 권한이 필요합니다. 실행 방법:

바로가기를 통해: 마우스 오른쪽 버튼 클릭 → 관리자 권한으로 실행.

작업 스케줄러를 통해: 작업 생성 시 → 최고 권한으로 실행.

PowerShell을 통해:

Start-Process "JsN.exe" -ArgumentList "config.json" -Verb RunAs

JsN.exe 종료 코드

코드 의미
0 스크립트가 성공적으로 실행됨
1 구성 또는 JS 파일 로드 실패