Приложения для запуска
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, программное обеспечение с открытым исходным кодом и сообщество свободного программного обеспечения.
Просмотреть все сообщения