Простой и надёжный менеджер процессов на 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 для автозапуска при старте | — |
Базовый URL: http://localhost:8080
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
}'curl http://localhost:8080/jobscurl -X POST http://localhost:8080/jobs/job-001 \
-H "Content-Type: application/json" \
-d '{"workers": 12}'curl -X DELETE http://localhost:8080/jobs/job-001[
{"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].