Systemd на Linux: автозапуск и управление сервисами на VPS
Гайд по systemd: unit-файлы, systemctl, journalctl. Как настроить автозапуск приложения, Nginx и бота на VPS.
На современном Linux всё крутится вокруг systemd. Понимание unit-файлов — must-have для VPS.
Основные команды
sudo systemctl start myapp
sudo systemctl stop myapp
sudo systemctl restart myapp
sudo systemctl enable myapp # автозапуск
sudo systemctl status myapp
Логи:
journalctl -u myapp -f
journalctl -u myapp --since "1 hour ago"
Структура unit-файла
[Unit]
Description=My Application
After=network.target
[Service]
Type=simple
User=deploy
WorkingDirectory=/var/www/myapp
ExecStart=/var/www/myapp/start.sh
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Файл: /etc/systemd/system/myapp.service
sudo systemctl daemon-reload
sudo systemctl enable myapp
Типичные ошибки
Restart loop — приложение падает сразу. Смотрите journalctl -u myapp -n 50.
Permission denied — неверный User или права на файлы.
Забыли daemon-reload — после изменения unit-файла обязательно.
Systemd vs cron
| systemd timer | cron | |
|---|---|---|
| Логи | journalctl | mail/файлы |
| Зависимости | Да | Нет |
| Точность | Секунды | Минуты |
Итог
Systemd — стандарт для сервисов на VPS. Каждое приложение = unit-файл + enable. Деплой бота — Telegram-бот на VPS.
Рекомендуем прочитать
Частые вопросы
Зачем systemd unit-файл вместо nohup?
systemd перезапускает сервис при падении, пишет в journal, стартует после reboot. Это стандарт для production на Linux VPS.
Как проверить, что сервис запустится после перезагрузки VPS?
systemctl is-enabled your-service и тестовый reboot. enabled + active (running) — сервис поднимется автоматически.






