Автозагрузка скриптов Ubuntu 18.04/20.04 через systemd

Автозагрузка скриптов Ubuntu 18.04/20.04 через systemd

У всех была задача когда при запуске нужно запустить некий скрипт, например: монтирование дисков, настройка правил firewall или запуск определенных сервисов в определенный момент. /etc/rc.local — устаревший метод и не всегда работает, поэтому сделаем это через systemd.

Итак, требуется добавить некий скрипт в автозагрузку. Пусть он лежит в /etc/script.sh. Делать его исполняемым необязательно.

Чтобы добавить скрипт в автозагрузку, нужно создать файл сервиса systemd. Для этого создаем файл сервиса с таким содержимом:
nano /etc/systemd/system/autostartscript.service

[Unit]
Description=This script runs at system startup
After=network.target

[Service]
Type=oneshot
ExecStart=/bin/bash /etc/script.sh

[Install]
WantedBy=multi-user.target

Имя файла можно выбрать произвольное, оно будет являться именем сервиса. Пройдемся по некоторым опциям:

  • Description — произвольное описание сервиса, будет видно при выводе через service status.
  • After — условие, после которого стартует наш скрипт. В данном случае после запуска сети.
  • Type — тип сервиса, обозначающий, что требуется одноразовый запуск и все. Контроль процесса выполнения отключен.
  • ExecStart — непосредственно путь выполняемого файла (bash, т.к. скрипт на bash’e) и путь до нашего скрипта.
  • WantedBy — требования для запуска, в данном случае это отключает запуск в single-user (он же режим восстановления).

Далее нужно обновить список сервисов в системе и включить сервис с использованием имени:
systemctl daemon-reload
systemctl enable autostartscript

Готово. Теперь можно проверять. Скрипт будет запускаться один раз после запуска сети при обычной загрузке системы в многопользовательском режиме.

* Предполагается, что вы работаете под root’ом. При работе от имени root’а приглашение ввода заканчивается символом #. Если это не так, то перейдите в консоль от рута командой sudo -i и введя пароль пользователя.

Автозагрузка скриптов Ubuntu 18.04/20.04 через systemd: 3 комментария

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *