Команды Linux

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

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

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

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

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

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

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

Systemd

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

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

$ mkdir -p ~ /.config / systemd / пользователь
$ nano ~ /.config / systemd / user / backup_reminder.услуга

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

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

[Ед. изм]
Описание = отправляет напоминание о резервном копировании при каждой перезагрузке
PartOf = графический сеанс.цель
[Услуга]
ExecStart = bash -c 'sleep 10; notify-send "Сделать резервную копию" '
Тип = oneshot
[Установить]
WantedBy = графический-сеанс.цель

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

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

$ chmod 644 ~ /.config / systemd / user / backup_reminder.услуга
$ systemctl --user enable backup_reminder.услуга
$ systemctl --user daemon-reload
$ перезагрузка

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

$ man systemd

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

Cron Job

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

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

$ crontab -e

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

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

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

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

$ echo $ DISPLAY

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

Rc.местный

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

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

$ sudo nano / etc / rc.местный

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

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

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

$ sudo chmod + x / etc / rc.местный

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

Заключение

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

Об авторе

Нитеш Кумар

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

Просмотреть все сообщения
WinMouse позволяет настраивать и улучшать движение указателя мыши на ПК с Windows
Если вы хотите улучшить функции указателя мыши по умолчанию, используйте бесплатное ПО WinMouse. Он добавляет дополнительные функции, которые помогут ...
Левая кнопка мыши не работает в Windows 10
Если вы используете выделенную мышь со своим ноутбуком или настольным компьютером, но левая кнопка мыши не работает в Windows 10/8/7 по какой-то причи...
Курсор прыгает или перемещается случайным образом при наборе текста в Windows 10
Если вы обнаружите, что ваш курсор мыши прыгает или перемещается сам по себе, автоматически, случайным образом при вводе текста на ноутбуке или компью...