Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Command Keeper

Простой и надёжный менеджер процессов на Go

Запускает и держит в живом состоянии нужное количество копий любой команды (shell или прямой exec).
Если процесс упал с ошибкой — автоматически перезапускает.
При успешном завершении (exit code 0) — не перезапускает.

Управление полностью через HTTP API + поддержка автозапуска через переменную окружения.


✨ Возможности

  • Запуск сколько угодно разных команд одновременно
  • Поддержка shell-команд (sh -c / cmd /c) и прямого exec (args)
  • Авто-restart только при ошибке
  • Динамическое изменение количества воркеров на лету
  • Остановка конкретного Job через DELETE
  • Автозагрузка при старте через INITIAL_JOBS
  • Graceful shutdown
  • Работает на Linux / macOS / Windows

Переменные окружения

Переменная Описание По умолчанию
PORT Порт HTTP-сервера 8080
INITIAL_JOBS JSON-массив Jobs для автозапуска при старте —

HTTP API

Базовый URL: http://localhost:8080

1. Создать Job

curl -X POST http://localhost:8080/jobs \
  -H "Content-Type: application/json" \
  -d '{
    "command": "sleep 5 && echo \"Успешно\"",
    "workers": 5
  }'

Или прямой exec (рекомендуется):

curl -X POST http://localhost:8080/jobs \
  -H "Content-Type: application/json" \
  -d '{
    "args": ["ping", "-c", "5", "8.8.8.8"],
    "workers": 3
  }'

2. Список всех Jobs

curl http://localhost:8080/jobs

3. Изменить количество воркеров

curl -X POST http://localhost:8080/jobs/job-001 \
  -H "Content-Type: application/json" \
  -d '{"workers": 12}'

4. Остановить Job

curl -X DELETE http://localhost:8080/jobs/job-001

Примеры INITIAL_JOBS

[
  {"command": "sleep 10 && echo 'Shell OK'", "workers": 3},
  {"args": ["ffmpeg", "-i", "input.mp4", "-c", "copy", "output.mp4"], "workers": 2},
  {"command": "date && sleep 2", "workers": 1}
]

Как это работает

  • Каждый Job — это независимая группа воркеров одной команды.
  • Каждый воркер запускает команду в отдельном процессе.
  • При падении (exit code ≠ 0) — мгновенно поднимается новый.
  • При уменьшении workers — лишние процессы принудительно убиваются (SIGQUIT).
  • Всё логируется с удобными префиксами [Job job-001 W 3].

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages