Настройка и запуск JsN


Запуск

JsN.exe <путь_к_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-файл