Linux ubuntu автозапуск скрипта

Как добавить скрипт в автозагрузку Ubuntu

Иногда возникает необходимость выполнить свой скрипт во время загрузки системы или при входе пользователя в систему. Например, чтобы запустить определенную программу, поменять настройки разрешения экрана, запустить программу удалённого управления и так далее.

Сделать это можно несколькими способами. С помощью графической оболочки или с помощью системы инициализации Systemd, которая используется сейчас практически во всех дистрибутивах.

Создание скрипта для автозагрузки

Скорее всего, у вас уже есть скрипт, который вы хотите запускать. Но если нет, или же вы хотите попрактиковаться с другим скриптом, то создайте скрипт в папке /usr/local/bin. Эта папка обычно используется для хранения пользовательских бинарных файлов. Дальше в этой статье я буду использовать путь к скрипту /usr/local/losst-script.sh:

sudo vi /usr/local/losst-script.sh #!/bin/bash echo «Hello world» > ~/file

Этот скрипт просто выводит строчку «Hello world» в файл в домашней папке текущего пользователя. Более подробно о создании скриптов читайте в статье написание скриптов на Bash. Когда скрипт будет готов, сделайте его исполняемым:

sudo chmod ugo+x /usr/local/losst-script.sh

Вы можете запустить скрипт и убедится что он работает. А теперь давайте рассмотрим как добавить скрипт в автозагрузку Ubuntu.

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

В Systemd нет способа запускать все пользовательские скрипты в одном месте. Но вы можете создать юнит файл, который будет запускать ваш скрипт. Для этого используйте следующую команду:

sudo systemctl edit —force —full script.service

Команда откроет текстовый редактор, добавьте в него такое содержимое:

[Unit] Description=My Script Service After=multi-user.target [Service] Type=idle ExecStart=/usr/local/losst-script.sh [Install] WantedBy=multi-user.target

В строчке ExecStart можно прописать либо путь к скрипту, который надо выполнить, либо саму команду. Кроме того, здесь используется тип сервиса Idle, который означает что процесс не будет разветвляться.

Теперь добавьте этот скрипт в автозагрузку:

sudo systemctl enable srcipt

Если Systemd не видит такого сервиса, обновите информацию о юнитах с помощью команды:

sudo systemctl daemon-reload

После этого скрипт запустится во время инициализации системы. Вы можете убедится что всё работает, перезагрузив систему и посмотрев в папку /root. Там должен появится файл с текстом Hello world.

Читайте также:  Linux epson perfection v300

Если вам больше нравится старый способ загрузки скриптов, с помощью rc.local, вы можете создать файл /etc/rc.local, сделать его исполняемым и прописать путь к нему в строке ExecStart юнит-файла, после чего сможете им пользоваться как это было до появления Systemd.

Автозагрузка скрипта при входе пользователя

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

1. Автозагрузка Gnome в GUI

Запустите утилиту Автоматически запускаемые приложения или Startup Applications в главном меню системы. Эту же утилиту можно запустить из терминала выполнив команду:

Нажмите кнопку Добавить (Add) и в открывшемся окне, в поле Команда (Command) введите полный путь к файлу вашего скрипта или выберите его с помощью кнопки Обзор (Browse), затем нажмите Добавить (Add) внизу окна:

Скрипт будет выполнен после загрузки графической оболочки Ubuntu. Вы можете перезагрузить систему и убедится, что в домашней папке вашего пользователя появился файл file, с содержимым «Hello world».

2. Автозагрузка Gnome вручную

Всё описанное в предыдущем пункте можно сделать и вручную, без утилиты Startup Applications. Ярлыки приложений для автозагрузки могут находится в двух расположениях:

  • /etc/xdg/autostart/ — для всех пользователей;
  • ~/.config/autostart/ — для текущего пользователя.

Для создания ярлыка, который будет запускать ваш скрипт, создайте файл с расширением .desktop в одной из папок со следующим содержимым:

vi ~/.config/autostart/script.desktop [Desktop Entry]
Name=Script
Type=Application
Exec=/usr/local/losst-script.sh

Здесь в поле Exec необходимо прописать путь к скрипту, который надо выполнить, а в поле Name имя ярлыка. После этого ваш скрипт будет запускаться автоматически при входе пользователя в графическую оболочку. Утилита Startup Applications будет видеть этот ярлык и вы можете управлять им там тоже.

3. Автозагрузка в Systemd

Система инициализации Systemd позволяет запускать отдельный набор сервисов для каждого пользователя. Для управления такими сервисами нужно использовать опцию —user. Используйте такую команду для того чтобы создать файл скрипта:

systemctl edit —user —force —full script.service [Unit] Description=My Script Service After=default.target [Service] Type=idle ExecStart=/usr/local/losst-script.sh [Install] WantedBy=default.target

Юнит файл будет создан только для текущего пользователя. В данном случае это будет файл /home/sergiy/.config/systemd/user/script.service. Обратите внимание, что цель multi-user.target здесь недоступна, поэтому следует использовать default.target. Теперь осталось только добавить этот юнит в автозагрузку:

systemctl enable —user script.service

Поле этого можно перезагрузить систему и убедится что всё работает.

Выводы

Теперь вы знаете как добавить скрипт в автозагрузку Linux несколькими способами. Это может быть немного сложно для начинающих, но вы можете ознакомится ещё со статьей про Автозагрузку сервисов, а также Управление службами для того чтобы лучше понимать как всё работает.

Читайте также:  Linux list files order by date

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

📑 Настройка автозапуска скриптов в Linux Ubuntu/Mint

Ubuntu

Здесь рассматриваются способы настройки автозапуска скриптов в Ubuntu/Mint только в консольном режиме.

Создание скрипта в init.d для запуска во время инициализации системы

Для начала нужно создать скрипт и скопировать его в директорию /etc/init.d/ удобным для вас способом, а затем сделать его исполняемым командой:

$sudo chmod +x /etc/init.d/имя_скрипта

Теперь необходимо добавить его в автозагрузку:

$sudo update-rc.d имя_скрипта defaults

Скрипт запуститься во время инициализации системы.

Удалить из автозагрузки можно так:

$sudo update-rc.d -f имя_скрипта remove

Загрузка с помощью rc.local после загрузки системы

Необходимо создать скрипт в любой директории, где вам удобно и сделать его исполняемым как в первом способе.

$sudo chmod +x /etc/init.d/имя_скрипта

Затем подправить файл rc.local любым редактором текста, например nano:

Изначально скрипт rc.local пустой и содержит только:

#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. exit 0

Пропишите полный путь скрипта перед строчкой exit 0 и сохраните файл.

Как сказано в комментариях в эталонном rc.local делаем его исполняемым (хотя во многих дистрибутивах он изначально исполняемый):

Скрипт выполниться после загрузки системы .

Однако в последних версиях Ubuntu (например в Ubuntu 18.04) в директории /etc нет файла rc.local и его необходимо создать и сделать исполняемым:

$ sudo touch /etc/rc.local $ sudo chmod +x /etc/rc.local

Все, скрипт должен автоматически запускаться.

  • Настройка автозапуска скриптов в Linux Ubuntu/Mint
  • Устанавливаем оболочку bash про умолчанию
  • SOCS5 прокси сервер DANTE — установка и настройка
  • Работа с сервисами в Ubuntu 16.04
  • Установка сервера точного времени NTP в Ubuntu 16.04
  • Как протестировать скорость сетевого подключения VDS
  • Самоподписанные сертификаты, WP Multisite и cURL
  • Создание и подключение swap файла
  • Ошибка при обновлении ядра
  • Доступ к админке WP по SSL
  • Блокирование атак при помощи null route или blackhole
  • Добавление нового sudo пользователя
  • Блокирование ip адреса при помощи iptables
  • fail2ban для защиты WordPress
  • Ротация логов — logrotate
  • Простая защита в Apache от DOS атак
  • Защита сервера — Fail2Ban
  • Защита phpMyAdmin
  • Русская locale в Ubuntu Server
Читайте также:  Linux сервер малый бизнес

Источник

Как добавить скрипт в автозагрузку Ubuntu 22.04

linux-logo

Сегодня рассмотрим примеры по добавлению скрипта в автозагрузку на Ubuntu 22.04|20.04|18.04.

Для того чтобы добавить ваш скрипт в автозагрузку можно пойти двумя путями:

Первый вариант: Добавить запись в cron системы

Логинимся в системе как root

Создаем скрипт myscript.sh

В конце добавляем следующую запись:

@reboot /home/myuser/myscript.sh

Ставим права на запуск нашего скрипта:

chmod +x /home/myuser/myscript.sh

После перезагрузки системы ваш скрипт будет запущен автоматически.

Второй способ. Добавим скрипт для автозапуска в systemd

Создадим сервис запуска для systemd:

sudo nano /etc/systemd/system/startscript.service

Заполним его в соответствии с моим листингом:

[Unit] Description=My script service After=network.target [Service] ExecStart=/home/myuser/myscript.sh [Install] WantedBy=default.target

Создаем сам скрипт myscript.sh

Наполняем его необходимой информации, далее выставим права на наш скрипт

chmod +x /home/myuser/myscript.sh 

Перезапускаем демоны systemd

sudo systemctl daemon-reload
sudo systemctl enable startscript.service sudo systemctl start startscript.service

Если есть вопросы, то пишем в комментариях.

Также можете вступить в Телеграм канал, ВКонтакте или подписаться на Twitter. Ссылки в шапке страницы.
Заранее всем спасибо.

RSS

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

linux-logo

Сегодня в статье настроим и русифицируем Ubuntu Server 16.04/18.04/20.04. Чтобы поддерживался русский язык, и перевод системы стал русским

dns_bind9

Начиная с сентября 2017 года удостоверяющим центрам предписано обязательно проверять CAA-записи в DNS перед генерацией сертификата

linux-logo

В этой статье рассмотрим пример обновления Ubuntu Server 16.04 до Ubuntu Server 18.04 Все наши действия нам придется выполнять из Читать

В связи с последними блокировками IP-адресов Роскомнадзором, встала необходимость завести свой собственный VPN сервер. Если VPN у вас ещё не Читать

Когда вы первый раз заходите с помощью соцсетей, мы получаем публичную информацию из вашей учетной записи, предоставляемой провайдером услуги соцсети в рамках ваших настроек конфиденциальности. Мы также автоматически получаем ваш e-mail адрес для создания вашей учетной записи на нашем веб сайте. Когда она будет создана, вы будете авторизованы под этой учетной записью.

Когда вы первый раз заходите с помощью соцсетей, мы получаем публичную информацию из вашей учетной записи, предоставляемой провайдером услуги соцсети в рамках ваших настроек конфиденциальности. Мы также автоматически получаем ваш e-mail адрес для создания вашей учетной записи на нашем веб сайте. Когда она будет создана, вы будете авторизованы под этой учетной записью.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Источник

Оцените статью
Adblock
detector