Команди Linux

Як автоматично запускати команди та сценарії Linux під час перезавантаження системи

Як автоматично запускати команди та сценарії Linux під час перезавантаження системи
Запуск програм та сценаріїв автоматично під час запуску може бути корисним для автоматизації загальних завдань та подій завантаження. У цій статті буде описано кілька методів, які можна використовувати для запуску програм та сценаріїв при новій перезавантаженні або новому вході.

Програми запуску

Ubuntu та інші дистрибутиви, засновані на GNOME, постачаються з додатком, який називається просто «Запуск програми». Він може бути використаний для управління програмами та сценаріями, які працюють під час перезавантаження системи або входу в систему.

Запустіть програму «Запуск додатків» із панелі запуску програм і натисніть кнопку «Додати», щоб додати новий запис.

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

Як зазначено вище, при кожному перезавантаженні відображається нагадування про резервне копіювання.

Systemd

Systemd - це демон і менеджер служб, який містить різні утиліти для управління системними процесами та компонентами ОС. У спрощеній формі він зазвичай використовується для запуску та закінчення служб у новому циклі завантаження.

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

$ mkdir -p ~ /.config / systemd / user
$ nano ~ /.config / systemd / user / backup_reminder.обслуговування

Замініть “nano” командою улюбленого текстового редактора. Замініть “backup_reminder” будь-яким іншим назвою, яке вам більше подобається.

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

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

Наведений вище код досить простий. Він надсилає сповіщення "Зробити резервну копію" через 10 секунд після завантаження графічного сеансу (один раз при кожному перезавантаженні або вході в систему).

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

$ chmod 644 ~ /.config / systemd / user / backup_reminder.обслуговування
$ systemctl --user увімкнути backup_reminder.обслуговування
$ systemctl - перезавантаження демона користувача
$ перезавантаження

Це лише простий приклад запуску базової команди при завантаженні за допомогою systemd. Ви також можете створити розширені служби з кількома умовами та кількома командами. Щоб отримати додаткові відомості, зверніться до сторінки man systemd, виконавши команду нижче:

$ man systemd

Зверніть увагу, що в цьому прикладі пояснюється створення нової служби, яка не потребує кореневого доступу та підходить для програм автоматичного запуску, для яких не потрібні права root. Якщо ви хочете автоматично запустити сценарії, що вимагають кореневого доступу, вам доведеться створити нову службу systemd у каталозі “/ etc / systemd / system” замість “~ /.config / systemd / user ”і пропустіть перемикач“ -user ”у командах, згаданих вище.

Крон Йов

Cron - це інструмент, який може періодично запускати заплановані завдання відповідно до умов, визначених користувачем. Ці заплановані завдання створюються в Crontab у заздалегідь визначеному форматі. Простіше кажучи, Crontab повідомляє Cron, які завдання виконувати в який момент часу.

Як і systemd, завдання crontab можна використовувати для запуску програм та автоматичного запуску сценаріїв під час завантаження. Щоб додати нове завдання cron, запустіть команду нижче:

$ crontab -e

Додайте наступні рядки в кінці текстового файлу (автоматично запускає термінал GNOME при кожному перезавантаженні):

SHELL = / bin / bash
@reboot sleep 30 && DISPLAY =: 0 гном-термінал

Ви можете використовувати власну команду або вказати повний шлях до сценарію оболонки.

Зауважте, що на відміну від systemd, cron не може виявити, завантажений графічний сеанс чи ні. Вам потрібно вказати деякий передбачуваний період очікування до завантаження сервера X та ідентифікатор дисплея. Ви можете дізнатися про свій ідентифікатор дисплея, виконавши команду нижче:

$ echo $ DISPLAY

Затримка перед виконанням команди або сценарію залежить від конфігурації вашої системи та часу завантаження.

Rc.місцеві

Іншим методом запуску сценаріїв та команд під час запуску є використання “rc.локальний ”файл. Зверніть увагу, що під час мого тестування я не зміг відкласти виконання сценарію до моменту запуску графічного сеансу. Додавання будь-якої затримки сну призводить до затримки показу самого екрана входу. Через це я не мав успіху в запуску графічних програм під час запуску за допомогою rc.локальний файл. Редагування rc.local також вимагає root-доступу, на відміну від усіх інших прикладів, пояснених вище.

Щоб додати команди / скрипти до rc.локальний файл, запустіть команду нижче (створює новий rc.локальний файл, якщо він не існує):

$ sudo nano / etc / rc.місцеві

Додайте свої команди між "#! / bin / bash »та« вихід 0 », як показано нижче:

#! / bin / bash
шлях / до / my_script.ш
вихід 0

Зробіть rc.виконуваний локальний файл, виконавши команду нижче:

$ sudo chmod + x / etc / rc.місцеві

Просто перезавантажте, щоб сценарій запуску набув чинності.

Висновок

Це кілька методів, якими можна автоматично запускати сценарії та програми під час запуску. Якщо ви хочете запускати сценарії, які не потребують кореневого доступу, я рекомендую використовувати програму графічного інтерфейсу «Запуск програми». Якщо ви хочете запускати програми та сценарії з кореневим доступом, я пропоную вам створити системну службу системного рівня.

Про автора

Нітеш Кумар

Я розробник програмного забезпечення-фрілансер та автор вмісту, який любить Linux, програмне забезпечення з відкритим кодом та спільноту вільного програмного забезпечення.

Переглянути всі повідомлення
Як використовувати Xdotool для стимулювання клацань миші та натискань клавіш у Linux
Xdotool - це безкоштовний інструмент командного рядка з відкритим кодом для імітації клацань миші та натискань клавіш. У цій статті буде розглянуто ко...
Топ 5 ергономічних продуктів для комп'ютерної миші для Linux
Чи викликає тривале використання комп’ютера біль у зап’ясті або пальцях? Ви страждаєте від ригідності суглобів і вам постійно доводиться трясти руки? ...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...