Как да стартирате автоматично команди и скриптове на Linux при рестартиране на системата

How Run Linux Commands



Автоматичното стартиране на приложения и скриптове при стартиране може да бъде полезно за автоматизиране на често срещани задачи и събития при зареждане. Тази статия ще обясни няколко метода, които могат да се използват за стартиране на приложения и скриптове при ново рестартиране или ново влизане.

Приложения за стартиране

Ubuntu и други дистрибуции, базирани на GNOME, идват с приложение, просто наречено Startup Applications. Може да се използва за управление на приложения и скриптове, които се изпълняват при ново рестартиране или влизане в системата.







Стартирайте приложението Startup Applications от стартовия панел и кликнете върху бутона Добавяне, за да добавите нов запис.





Попълнете полетата Име и Команда според вашите нужди и след това щракнете върху бутона Добавяне, за да завършите създаването на нов запис. Записът, създаден на екранната снимка по -долу, ще изпрати напомняне „Направи резервно копие“ като системно известие при всяко рестартиране / влизане. Можете да го замените със собствена команда или с пълен път на вашия bash скрипт. Можете също така да използвате всяка съществуваща системна команда или изпълними файлове, които обикновено се намират в различни папки за контейнери във файловата система.





Както бе посочено по -горе, при всяко рестартиране се показва резервно напомняне.



Systemd

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

Systemd може да се използва за автоматично стартиране на приложение или стартиране на скрипт при ново зареждане. За да създадете същото известие за напомняне за архивиране, обяснено по -горе, първо трябва да създадете необходимите папки и файл, като изпълните командите по -долу:

$mkdir -стр~/.config/система/потребител
$нано~/.config/система/потребител/backup_reminder.service

Заменете nano с команда на любимия си текстов редактор. Заменете backup_reminder с всяко друго име, което предпочитате.

Поставете кода по -долу във файла backup_reminder.service, създаден с помощта на горната команда.

[Мерна единица]
Описание = Изпраща резервно напомняне при всяко рестартиране
PartOf = графична сесия.цел

[Обслужване]
ExecStart = bash -c 'sleep 10; notify-send 'Направи резервно копие'
Тип = oneshot

[Инсталирай]
WantedBy = графична сесия.цел

Горният код е доста ясен. Той изпраща известие Make a Backup 10 секунди след зареждането на графичната сесия (веднъж при всяко рестартиране или влизане).

Изпълнете командите по -долу, за да активирате услугата, така че да може да се изпълнява автоматично при всяко рестартиране.

$chmod 644~/.config/система/потребител/backup_reminder.service
$ systemctl-потребител активирайтеbackup_reminder.service
$ systemctl-потребителdaemon-reload
$ рестартиране

Това е просто прост пример за изпълнение на основна команда при зареждане с помощта на systemd. Можете също така да създавате разширени услуги с множество условия и множество команди. За повече информация, вижте системната man страница, като изпълните командата по -долу:

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

Имайте предвид, че този пример обяснява създаването на нова услуга, която не изисква root достъп и е подходяща за автоматично стартиране на приложения, които не изискват root права. Ако искате да стартирате автоматично скриптове, изискващи root достъп, трябва да създадете нова услуга systemd в/etc/systemd/system директория вместо ~/.config/systemd/потребителска папка и да пропуснете потребителския ключ в споменатите по-горе команди.

Крон Йов

Cron е инструмент, който може периодично да изпълнява планирани задачи според условията, посочени от потребителя. Тези планирани работни места се създават в Crontab в предварително определен формат. С прости думи, Crontab казва на Cron кои работни места да се изпълняват в кой момент.

Подобно на systemd, заданията за crontab могат да се използват за стартиране на приложения и автоматично стартиране на скриптове при зареждане. За да добавите нова задача за cron, изпълнете командата по -долу:

$crontab

Добавете следните редове в края на текстовия файл (автоматично стартира терминала GNOME при всяко рестартиране):

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

Можете да използвате своя собствена команда или да предоставите пълен път към скрипта на обвивката.

Имайте предвид, че за разлика от systemd, cron не може да открие дали графичната сесия е заредена или не. Трябва да посочите прогнозен период на изчакване, докато X сървърът се зареди, и идентификатор на дисплея. Можете да разберете за вашия дисплей ID, като изпълните командата по -долу:

$изхвърлен $ DISPLAY

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

Rc.локално

Друг метод за стартиране на скриптове и команди при стартиране е да използвате rc.local файл. Обърнете внимание, че при моето тестване не успях да отложа изпълнението на скрипта, докато графичната сесия не е на живо. Добавянето на забавяне на съня води до забавяне в показването на самия екран за вход. Поради това нямах успех при стартирането на графични приложения при стартиране, използвайки rc.local файл. Редактирането на rc.local също изисква root достъп, за разлика от всички други примери, обяснени по -горе.

За да добавите команди / скриптове към rc.local файл, изпълнете командата по -долу (създава нов rc.local файл, ако не съществува):

$sudo нано /и т.н./rc.local

Добавете вашите команди между #! /bin/bash и изход 0 линии, както е показано по -долу:

#! /bin/bash
път/към/my_script.sh
изход 0

Направете rc.local файл изпълним, като изпълните командата по -долу:

$sudo chmod+ x/и т.н./rc.local

Просто рестартирайте, за да стартира скриптът за стартиране.

Заключение

Това са няколко метода, които могат да се използват за автоматично стартиране на скриптове и приложения при стартиране. Ако искате да стартирате скриптове, които не изискват root достъп, бих препоръчал да използвате приложението GUI на Startup Applications. Ако искате да стартирате приложения и скриптове с root достъп, бих ви предложил да създадете услуга systemd на системно ниво.

За автора

Нитеш Кумар

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

Преглед на всички публикации