Автозапуск скрипта при старте системы в Linux systemd

Как настроить автозапуск скрипта при старте системы в Linux systemd

Автозапуск скрипта при старте системы в Linux systemd настраивается созданием unit-файла в директории /etc/systemd/system/ с указанием пути к скрипту и его параметров выполнения. Это стандартный механизм инициализации современных дистрибутивов Linux.

Зачем это нужно

  • Автоматический запуск служб и приложений без ручного вмешательства после перезагрузки сервера
  • Управление зависимостями между сервисами и контроль порядка их инициализации
  • Централизованное логирование и мониторинг процессов через journalctl
  • Ограничение прав доступа — запуск скриптов от определённого пользователя
  • Автоматический перезапуск скрипта при его критическом завершении

Пошаговая инструкция

  1. Откройте терминал и перейдите в директорию systemd: cd /etc/systemd/system/
  2. Создайте новый unit-файл с расширением .service: sudo nano myscript.service
  3. Скопируйте следующий шаблон в файл:
    [Unit]
    Description=My Startup Script
    After=network.target
    
    [Service]
    Type=simple
    User=username
    WorkingDirectory=/home/username
    ExecStart=/home/username/myscript.sh
    Restart=on-failure
    RestartSec=10s
    
    [Install]
    WantedBy=multi-user.target
  4. Замените username на имя пользователя, от которого должен запускаться скрипт
  5. Замените /home/username/myscript.sh на абсолютный путь к вашему скрипту
  6. Убедитесь, что скрипт имеет права на выполнение: sudo chmod +x /home/username/myscript.sh
  7. Сохраните файл: нажмите Ctrl+O, затем Enter, затем Ctrl+X
  8. Перезагрузите конфигурацию systemd: sudo systemctl daemon-reload
  9. Включите автозапуск сервиса: sudo systemctl enable myscript.service
  10. Запустите сервис немедленно для проверки: sudo systemctl start myscript.service
  11. Проверьте статус выполнения: sudo systemctl status myscript.service
  12. Просмотрите логи работы: sudo journalctl -u myscript.service -f

Часто задаваемые вопросы

Как отключить автозапуск скрипта? Выполните команду sudo systemctl disable myscript.service, после чего сервис не будет запускаться при загрузке системы.

Почему скрипт не запускается после перезагрузки? Проверьте права на выполнение файла (chmod +x), убедитесь в корректности пути в параметре ExecStart и проверьте логи через journalctl.

Можно ли запустить несколько скриптов один за другим? Да, используйте параметр Type=oneshot в unit-файле и указывайте несколько команд через ExecStart или создайте bash-скрипт-обёртку.

Похожие материалы

Зависла графическая оболочка в Linux как перезапустить X-сервер
Ошибка apt-get update при сбое репозиториев в Debian
Google Chrome через терминал в Ubuntu Linux