Иногда возникает необходимость выполнить свой скрипт во время загрузки системы. Например, чтобы запустить определенную программу, поменять настройки разрешения экрана или выполнить обновление необходимой программы.
Сделать это можно несколькими способами. С помощью графической оболочки или с помощью системы инициализации systemd, которая используется сейчас практически во всех дистрибутивах.
Автозагрузка с помощью стандартной утилиты Ubuntu
Создайте скрипт в удобном месте и сделайте его выполняемым:
sudo gedit /путь_к_скрипту/имя_скрипта.sh
Наш скрипт просто выводит строчку Hello world на экран, более подробно о создании скриптов читайте в статье написание скриптов на Bash. Когда скрипт будет готов, сделайте его исполняемым:
sudo chmod ugo+x /путь_к_скрипту/имя_скрипта.sh
Запустите утилиту Автоматически запускаемые приложения в главном меню системы:
Нажмите кнопку Добавить и в поле Команда введите полный путь к файлу вашего скрипта или выберите его с помощью кнопки Обзор, затем нажмите Добавить:
Скрипт будет выполнен после загрузки графической оболочки Ubuntu.
Автозагрузка скриптов Linux в systemd
Создайте файл сервиса systemd с помощью следующей команды:
sudo systemctl edit --force myscript
Добавьте в него такое содержимое:
В строчке ExecStart можно прописать либо путь к скрипту, который надо выполнить, либо саму команду. Теперь добавьте этот скрипт в автозагрузку:
sudo systemctl daemon-reload
sudo systemctl enable mysrcipt
Скрипт запустится во время инициализации системы. Если вам нравится старый способ загрузки скриптов, с помощью rc.local., вы можете создать файл /etc/rc.local и прописать путь к нему в строке ExecStart сервис-файла, после чего сможете им полноценно пользоваться.
В современных дистрах Ubuntu сейчас это делается вот так 🙂
sudo update-rc.d /path-to-script/script.sh defaults
Статью нужно доработать. Для новичков написана сложно.
Как в итоге выглядит rc.local, что такое ugo, нужно ли делать файл-скрипт System V ?
Т.е. нужно ещё подробнее писать, чтобы не искать ответы где-то в интернете дополнительно.
и научиться наконец отличать ться от тся
Спасибо, всё очень понятно и доступно 🙂 .
добавил через "Приложения запускаемые автоматически" запуск touchpad-indicator, который прекрасно стартовал мануально и в баше, но отказывался запускаться через /etc/rc.local.
потому что не понятно на самом деле.
rc.local - запуск по загрузке системы, а не по старту сессии пользователя
>>Скрипт будет выполнен после загрузки графической оболочки Ubuntu>>Скрипт запустится во время инициализации системы.
Это да, однако, никакого результаты выполнения предложенного скрипта в GUI не увидеть.
Failed to enable unit: Unit file myscript.service does not exist.
Failed to enable unit: Unit file myscript.service does not exist.