TGViewer
.NET Kings .NET Kings @netskings · 7.38K subscribers
Post #711 1.05K
👁‍🗨Hello world~

Runit: Возможности каталога сервиса

• Для создания простейшего сервиса runit достаточно одного исполняемого файла run, но каталог службы может содержать и другие файлы, с помощью которых настраивается её поведение.

• Файл down запрещает автоматический запуск сервиса. runsv продолжит следить за каталогом, но будет ждать команды от пользователя.
Создать его можно командой:

touch /etc/sv/example/down


• После этого сервис можно однократно запустить вручную:

sv once example


• В отличие от sv up, команда sv once не станет перезапускать программу после её завершения, что удобно для проверки нового сервиса.

• Исполняемый файл finish запускается после завершения run. Он получает код завершения процесса и информацию о сигнале, которым тот был остановлен, поэтому через finish можно выполнить очистку временных файлов или подготовить окружение перед перезапуском.

• Файл check позволяет проверить не только наличие процесса, но и реальную готовность сервиса. Например, для веб-приложения можно проверить, открылся ли нужный порт:

#!/bin/sh
exec nc -z 127.0.0.1 8080


• Если check завершается с кодом 0, сервис считается готовым. Такая проверка используется командами sv start, sv restart и sv check.

• Для запуска программы от имени отдельного пользователя применяется chpst:

#!/bin/sh
exec chpst -u serviceuser:servicegroup \
/usr/bin/example --foreground


• Кроме смены пользователя, chpst умеет изменять переменные окружения, лимиты ресурсов, корневой каталог процесса и некоторые другие параметры.

• Через sv также можно отправлять процессу сигналы:

sv hup example
sv term example
sv kill example


• Полноценного декларативного графа зависимостей, как в systemd, у runit нет. При необходимости один сервис можно дождаться из run скрипта:

sv start database || exit 1
exec /usr/bin/example --foreground


• Однако многие службы просто завершаются при отсутствии зависимости, после чего runsv продолжает пытаться их запустить, пока необходимый компонент не появится.

• Каталог сервиса в runit это не просто место для одного скрипта, а небольшой интерфейс управления его запуском, остановкой, проверкой и восстановлением. Работа down, finish и управляющих сигналов описана в документации runsv и sv. Удачи!

• Поддержать автора монеткой: @v_meshke
  • ❤ 10
  • ☃ 2
  • 🔥 2
  • 🥰 1
More from @netskings
  1. Sep 24, 2026👁‍🗨Hello world~ Как работает антивирус: Direct и Indirect Syscalls • Если EDR перехватыв…
  2. Sep 23, 2026🔎По одному имени, почте или номеру можно собрать на человека целое досье — легально, из о…
  3. Sep 23, 2026👁‍🗨Hello world~ GEOINT: Пожары, землетрясения и другие катастрофы на карте • Карты приро…
  4. Sep 22, 2026👁‍🗨Hello world~ Runit против systemd: Где минимализм начинает мешать • Я уже рассказывал…
  5. Sep 19, 2026👁‍🗨Hello world~ Изучаем сеть: Как компьютер определяет маршрут пакета • Представим, что…
  6. Sep 18, 2026👁‍🗨Hello world~ OSINT во ВКонтакте: История профиля и проверка старых данных • Пользоват…
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 →