Раньше было принято размещать все скрипты, которые запускаются по умолчанию в файле /etc/rc.local
. Этот файл все еще существует, но это пережиток системы инициализации SysVinit
и теперь он сохраняется только для совместимости. Скрипты же нужно загружать только с помощью Systemd.
Для этого достаточно создать простой юнит-файл и добавить его в автозагрузку, как любой другой сервис. Сначала создадим этот файл:
$ sudo nano /lib/systemd/system/runscript.service
[Unit] Description=My Script Service After=multi-user.target [Service] Type=idle ExecStart=/usr/bin/local/script.sh [Install] WantedBy=multi-user.target
В секции Unit мы даем краткое описание нашему файлу и говорим с помощью опции After
, что нужно запускать этот скрипт в многопользовательском режиме (multi-user)
. Секция Service
самая важная, здесь мы указываем тип сервиса - idle
, это значит, что нужно просто запустить и забыть, вести наблюдение нет необходимости, а затем в параметре ExecStart
указываем полный путь к нашему скрипту.
Осталось выставить правильные права:
$ sudo chmod 644 /lib/systemd/system/runscript.service
Затем обновить конфигурацию и добавить в автозагрузку Linux новый скрипт:
$ sudo systemctl daemon-reload
$ sudo systemctl enable myscript.service
После следующей перезагрузки этот скрипт будет запущен автоматически. Обратите внимание, что для каждого скрипта, который вы собираетесь запускать должны быть правильно выставлены права, а именно нужно установить флаг выполнения. Для этого используйте команду chmod:
$ sudo chmod u+x /usr/local/bin/script
В параметрах мы передаем утилите адрес файла скрипта. Исполняемость - это обязательный параметр для всех способов.
Источник ualinux.com