Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
SYSTEMD_SERVICE_CREATE Linux / DevOps

Как добавить скрипт или программу в автозагрузку Linux через Systemd

Обновлено: 27.08.2026  ·  Официальная база знаний

Зачем использовать Systemd вместо rc.local или cron @reboot?

Запуск фоновых скриптов через cron не гарантирует их работу при падении. Systemd — это современный стандарт управления процессами в Linux, который:

  • Автоматически запускает службу при загрузке сервера после поднятия сети.
  • Сам перезапускает скрипт при непредвиденных ошибках и сбоях.
  • Ведет подробные системные журналы выполнения (через journalctl).
  • Позволяет ограничить потребление памяти и прав учетной записи.

Создание собственного сервиса .service

  1. Создайте новый unit-файл службы в каталоге systemd:
    sudo nano /etc/systemd/system/myscript.service
  2. Вставьте следующую стандартную конфигурацию (на примере Python-скрипта или Node.js):
    [Unit]
    Description=Мой пользовательский фоновый сервис
    After=network.target
    
    [Service]
    Type=simple
    User=ubuntu
    WorkingDirectory=/home/ubuntu/myapp
    ExecStart=/usr/bin/python3 /home/ubuntu/myapp/main.py
    Restart=always
    RestartSec=5
    StandardOutput=journal
    StandardError=journal
    
    [Install]
    WantedBy=multi-user.target
  3. Перечитайте конфигурацию системных служб:
    sudo systemctl daemon-reload
  4. Включите автозапуск службы при старте системы и запустите ее прямо сейчас:
    sudo systemctl enable --now myscript.service
  5. Проверьте текущий статус работы:
    sudo systemctl status myscript.service

Совет: Всегда указывайте полные абсолютные пути к исполняемым файлам (например, /usr/bin/python3 вместо просто python3). Узнать точный путь можно командой which python3 или which bash.

Практический опыт инженера: Если скрипт работает с базой данных на том же сервере, добавьте в секцию [Unit] строку After=network.target mysql.service, чтобы ваш скрипт не пытался стартовать раньше, чем поднимется база данных.

Частые вопросы (FAQ)

Как посмотреть логи работы созданного скрипта?

Используйте утилиту journalctl: journalctl -u myscript.service -f (флаг -f транслирует новые записи в реальном времени).

Что делает параметр RestartSec=5?

Если ваш скрипт аварийно завершится (упадет), systemd подождет ровно 5 секунд и автоматически запустит его заново.

Зачем указывать параметр User?

Запуск скриптов от обычного пользователя (например, User=ubuntu или User=www-data) предотвращает захват всего сервера злоумышленниками в случае уязвимости в коде вашего скрипта.

Как удалить службу из системы навсегда?

Выполните sudo systemctl disable --now myscript.service, затем удалите файл sudo rm /etc/systemd/system/myscript.service и выполните sudo systemctl daemon-reload.