TGViewer
Библиотека девопса | DevOps, SRE, Sysadmin Библиотека девопса | DevOps, SRE, Sysadmin @devopsslib · 10.4K subscribers
Post #4815 1.03K
👨‍💻 Альтернатива systemd для управления сервисами

runit это минималистичная система инициализации с автоматическим надзором за процессами. Сервис упал, runit его перезапустит без лишних настроек.

runit работает в три этапа: инициализация системы, надзор за сервисами и корректное завершение работы. Основа это runsvdir, который следит за директориями сервисов и запускает runsv для каждого из них.

Конфигурация сервиса это shell-скрипт. Без YAML, без XML, без многостраничной документации.

Установка:
# Debian/Ubuntu
sudo apt-get install runit

# Arch Linux
sudo pacman -S runit

# CentOS/RHEL
sudo dnf install runit


Создать сервис

Структура минимальная: директория с исполняемым файлом run.
sudo mkdir -p /etc/sv/webserver

sudo tee /etc/sv/webserver/run << 'EOF'
#!/bin/sh
exec 2>&1
cd /var/www/html
exec python3 -m http.server 8080
EOF

sudo chmod +x /etc/sv/webserver/run

# Включить сервис
sudo ln -s /etc/sv/webserver /etc/service/


Два ключевых правила в run-скрипте: использовать exec вместо запуска в фоне и перенаправлять stderr через exec 2>&1. Программа должна работать на переднем плане, runit сам управляет процессом.

Основные команды через sv:
sv start webserver    # запустить
sv stop webserver # остановить
sv restart webserver # перезапустить
sv status webserver # статус


Пример вывода статуса:
run: nginx: (pid 1234) 3600s
down: mysql: 120s, normally up


Логирование через `svlogd`

runit поставляется с собственным логгером. Он умеет в ротацию, фильтрацию и временны́е метки.
sudo mkdir -p /etc/sv/webserver/log

sudo tee /etc/sv/webserver/log/run << 'EOF'
#!/bin/sh
exec svlogd -tt /var/log/webserver
EOF

sudo chmod +x /etc/sv/webserver/log/run
sudo mkdir -p /var/log/webserver


Как выглядит миграция с systemd

Типичный unit-файл systemd:
[Service]
Type=simple
User=webuser
WorkingDirectory=/opt/webapp
ExecStart=/opt/webapp/bin/server
Restart=always


Эквивалент в runit:
#!/bin/sh
exec 2>&1
cd /opt/webapp
exec chpst -u webuser /opt/webapp/bin/server


chpst — утилита из runit для запуска процессов от другого пользователя и с ограничениями по ресурсам.

Это не замена systemd в полноценном десктопном окружении, но для серверных задач вполне рабочий вариант.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#арсенал_инженера
  • ❤ 4
More from @devopsslib
  1. Sep 18, 2026От исходного кода до процессора: разберись, как работает программа 💻 Стартует практически…
  2. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  3. Sep 15, 2026👩‍💻 Bash-скрипт для мониторинга сервисов Полноценный мониторинг вроде Zabbix или Prometh…
  4. Sep 13, 2026🌸 Вселенная намекает: пора уже начать этот курс С 14 сентября цены в Proglib Academy выра…
  5. Sep 13, 2026🤪 Если бы можно было задать один вопрос про AI в разработке — что бы вы спросили? Как выб…
  6. Sep 10, 2026Планы на 3 октября — прийти на RWB Infra x Security Meetup Мы направим прожекторы на инфра…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →