Главная  /  Помощь  /  Своя программа в автозапуске: systemd

Своя программа в автозапуске: systemd

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

Содержание

Если на сервере работает ваша программа — бот, обработчик заданий, сайт на Node.js или Python, — оформите её службой. Тогда она сама запустится после перезагрузки сервера и сама поднимется, если упадёт. Старый способ — дописать команду в /etc/rc.local — в нынешних системах по умолчанию не работает.

Файл службы

Создайте файл /etc/systemd/system/mybot.service (вместо mybot — любое имя):

[Unit]
Description=Мой бот
After=network-online.target
Wants=network-online.target

[Service]
User=bot
WorkingDirectory=/opt/mybot
ExecStart=/usr/bin/python3 /opt/mybot/bot.py
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
  • User — от чьего имени работает программа. Root ей обычно не нужен — заведите отдельного пользователя: sudo useradd -r -s /usr/sbin/nologin bot.
  • ExecStart — команда запуска, с полными путями. Где лежит программа, подскажет command -v python3 — см. Где находится программа.
  • Restart=on-failure — перезапускать, если программа завершилась с ошибкой.
  • Пароли и ключи не пишите прямо в файл службы — положите их в отдельный файл с правами 600 и подключите строкой EnvironmentFile=/etc/mybot.env.

Запуск и проверка

sudo systemctl daemon-reload          # перечитать файлы служб
sudo systemctl enable --now mybot     # запустить и включить автозапуск
systemctl status mybot                # работает ли
journalctl -u mybot -f                # что программа пишет (выход — Ctrl+C)

Поправили файл службы — снова daemon-reload, затем sudo systemctl restart mybot.

Во FreeBSD

Проще всего — строка в crontab пользователя (crontab -e). Программа daemon из системы перезапустит её, если она упадёт:

@reboot /usr/sbin/daemon -r -o /var/log/mybot.log /usr/local/bin/python3 /opt/mybot/bot.py
Не нашли ответ? Напишите в поддержку — подскажем.

Контакты (495) 664-22-98 или Написать нам

© 2026 Транзит Телеком · Все права защищены