Как автоматически запускать команды и сценарии Linux при перезагрузке системы

How Run Linux Commands



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

Приложения для запуска

Ubuntu и другие дистрибутивы на основе GNOME поставляются с приложением, которое просто называется Startup Applications. Его можно использовать для управления приложениями и скриптами, которые запускаются при новой перезагрузке системы или входе в систему.







Запустите приложение «Запуск приложений» из средства запуска приложений и нажмите кнопку «Добавить», чтобы добавить новую запись.





Заполните поля «Имя» и «Команда» в соответствии с вашими потребностями, а затем нажмите кнопку «Добавить», чтобы завершить создание новой записи. Запись, созданная на скриншоте ниже, будет отправлять напоминание о создании резервной копии в качестве системного уведомления при каждой перезагрузке / входе в систему. Вы можете заменить его своей собственной командой или полным путем к вашему сценарию bash. Вы также можете использовать любую существующую системную команду или исполняемые файлы, обычно расположенные в различных папках bin в файловой системе.





Как указано выше, напоминание о резервном копировании отображается при каждой перезагрузке.



Systemd

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

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

$mkdir -п~/.config/система/Пользователь
$нано~/.config/система/Пользователь/backup_reminder.service

Замените nano командой вашего любимого текстового редактора. Замените backup_reminder любым другим именем, которое вам больше нравится.

Вставьте приведенный ниже код в файл backup_reminder.service, созданный с помощью приведенной выше команды.

[Ед. изм]
Описание = отправляет напоминание о резервном копировании при каждой перезагрузке.
PartOf = graphical-session.target

[Услуга]
ExecStart = bash -c 'sleep 10; notify-send «Сделать резервную копию»
Тип = oneshot

[Установить]
WantedBy = graphical-session.target

Код выше довольно прост. Он отправляет уведомление о создании резервной копии через 10 секунд после загрузки графического сеанса (один раз при каждой перезагрузке или входе в систему).

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

$chmod 644~/.config/система/Пользователь/backup_reminder.service
$ systemctl--Пользователь включитьbackup_reminder.service
$ systemctl--Пользовательдемон-перезагрузка
$ перезагрузка

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

$человексистема

Обратите внимание, что в этом примере объясняется создание новой службы, не требующей root-доступа и подходящей для автозапуска приложений, не требующих root-прав. Если вы хотите автоматически запускать сценарии, требующие root-доступа, вам необходимо создать новую службу systemd в каталоге / etc / systemd / system вместо папки ~ / .config / systemd / user и опустить переключатель –user в упомянутых выше командах.

Cron Job

Cron - это инструмент, который может периодически запускать запланированные задачи в соответствии с условиями, указанными пользователем. Эти запланированные задания создаются в Crontab в заранее определенном формате. Проще говоря, Crontab сообщает Cron, какие задания запускать в какой момент времени.

Как и systemd, задания crontab можно использовать для автоматического запуска приложений и сценариев при загрузке. Чтобы добавить новое задание cron, выполните следующую команду:

$crontab-А также

Добавьте следующие строки в конец текстового файла (автоматически запускает терминал GNOME при каждой перезагрузке):

ОБОЛОЧКА = / bin / bash
@reboot sleep 30 && DISPLAY =: 0 gnome-terminal

Вы можете использовать свою команду или указать полный путь к сценарию оболочки.

Обратите внимание, что в отличие от systemd, cron не может определить, загружен ли графический сеанс или нет. Вы должны указать предполагаемый период ожидания загрузки X-сервера и идентификатор отображения. Вы можете узнать о своем отображаемом идентификаторе, выполнив команду ниже:

$выбросил $ ДИСПЛЕЙ

Задержка перед выполнением команды или сценария зависит от конфигурации вашей системы и времени загрузки.

Rc.local

Другой метод запуска сценариев и команд при запуске - использование файла rc.local. Обратите внимание, что в моем тестировании я не мог отложить выполнение скрипта до запуска графического сеанса. Добавление любой задержки сна приводит к задержке показа самого экрана входа в систему. Из-за этого мне не удалось запустить графические приложения при запуске с использованием файла rc.local. Для редактирования rc.local также требуется root-доступ, в отличие от всех других примеров, описанных выше.

Чтобы добавить команды / сценарии в файл rc.local, выполните команду ниже (создает новый файл rc.local, если он не существует):

$судо нано /так далее/rc.local

Добавьте свои команды между #! / bin / bash и выйдите из 0 строк, как показано ниже:

#! / bin / bash
путь / к / my_script.sh
выход 0

Сделайте файл rc.local исполняемым, выполнив следующую команду:

$судо chmod+ х/так далее/rc.local

Просто перезагрузитесь, чтобы сценарий запуска вступил в силу.

Заключение

Это несколько методов, которые можно использовать для автоматического запуска скриптов и приложений при запуске. Если вы хотите запускать сценарии, для которых не требуется root-доступ, я бы рекомендовал использовать приложение Startup Applications GUI. Если вы хотите запускать приложения и скрипты с root-доступом, я бы посоветовал вам создать сервис systemd на уровне системы.

Об авторе

Нитеш Кумар

Я фрилансер, разработчик программного обеспечения и автор контента, который любит Linux, программное обеспечение с открытым исходным кодом и сообщество свободного программного обеспечения.

Просмотреть все сообщения