Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

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

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.

Полезные материалы
Рекомендуем