Cum se execută automat comenzi și scripturi Linux la o repornire a sistemului

How Run Linux Commands



Rularea automată a aplicațiilor și scripturilor la pornire poate fi utilă pentru automatizarea sarcinilor și evenimentelor de boot obișnuite. Acest articol va explica câteva metode care pot fi utilizate pentru lansarea aplicațiilor și scripturilor la o nouă repornire sau la o nouă autentificare.

Aplicații de pornire

Ubuntu și alte distribuții bazate pe GNOME vin cu o aplicație numită pur și simplu Startup Applications. Poate fi utilizat pentru gestionarea aplicațiilor și scripturilor care rulează pe o nouă repornire sau conectare a sistemului.







Lansați aplicația Startup Applications din lansatorul de aplicații și faceți clic pe butonul Add pentru a adăuga o intrare nouă.





Completați câmpurile Nume și Comandă conform nevoilor dvs. și apoi faceți clic pe butonul Adăugare pentru a finaliza crearea unei noi intrări. Intrarea creată în captura de ecran de mai jos va trimite un memento Faceți o copie de rezervă ca notificare de sistem la fiecare repornire / autentificare. Îl puteți înlocui cu propria comandă sau cu calea completă a scriptului bash. Puteți utiliza, de asemenea, orice comandă de sistem existentă sau executabile localizate de obicei în diferite dosare de coșuri din sistemul de fișiere.





După cum sa menționat mai sus, la fiecare repornire este afișat un memento de rezervă.



Systemd

Systemd este un daemon și un manager de servicii care conține diverse utilități pentru gestionarea proceselor de sistem și a componentelor sistemului de operare. În forma sa simplistă, este de obicei folosit pentru a începe și a termina servicii într-un ciclu de boot nou.

Systemd poate fi folosit pentru a lansa automat o aplicație sau pentru a rula un script pe un boot nou. Pentru a crea aceeași notificare de memento de rezervă explicată mai sus, mai întâi trebuie să creați folderele și fișierele necesare executând comenzile de mai jos:

$mkdir -p~/.config/sistem/utilizator
$nano~/.config/sistem/utilizator/backup_reminder.service

Înlocuiți nano cu comanda editorului de text preferat. Înlocuiți backup_reminder cu orice alt nume pe care îl preferați.

Lipiți codul de mai jos în fișierul backup_reminder.service creat folosind comanda de mai sus.

[Unitate]
Descriere = Trimite un memento de rezervă la fiecare repornire
PartOf = sesiune-grafică.target

[Serviciu]
ExecStart = bash -c 'sleep 10; notificare-trimitere „Faceți o copie de rezervă” ”
Type = oneshot

[Instalare]
WantedBy = graphical-session.target

Codul de mai sus este destul de simplu. Trimite o notificare Efectuați o copie de rezervă la 10 secunde după încărcarea sesiunii grafice (o dată la fiecare repornire sau conectare).

Rulați comenzile de mai jos pentru a activa serviciul, astfel încât acesta să poată rula automat la fiecare repornire.

$chmod 644~/.config/sistem/utilizator/backup_reminder.service
$ systemctl--utilizator permitebackup_reminder.service
$ systemctl--utilizatordaemon-reoad
$ reporniți

Acesta este doar un exemplu simplu de a rula o comandă de bază la pornire folosind systemd. De asemenea, puteți crea servicii avansate cu condiții multiple și comenzi multiple. Pentru mai multe informații, consultați pagina de manual systemd executând comanda de mai jos:

$omsistem

Rețineți că acest exemplu explică crearea unui nou serviciu care nu necesită acces root și este potrivit pentru pornirea automată a aplicațiilor care nu necesită permisiuni root. Dacă doriți să porniți automat scripturile care necesită acces root, trebuie să creați un nou serviciu systemd în directorul / etc / systemd / system în loc de folderul ~ / .config / systemd / user și omiteți comutatorul –user în comenzile menționate mai sus.

Cron Job

Cron este un instrument care poate rula periodic sarcini programate în conformitate cu condițiile specificate de un utilizator. Aceste lucrări programate sunt create în Crontab într-un format predefinit. În termeni simpli, Crontab îi spune lui Cron ce joburi să ruleze în ce moment.

La fel ca systemd, joburile crontab pot fi utilizate pentru a lansa aplicații și a rula scripturi automat la pornire. Pentru a adăuga un nou job cron, rulați comanda de mai jos:

$crontab-Și

Adăugați următoarele rânduri la sfârșitul fișierului text (lansează automat terminalul GNOME la fiecare repornire):

SHELL = / bin / bash
@reboot sleep 30 && DISPLAY =: 0 gnome-terminal

Puteți utiliza propria comandă sau puteți furniza calea completă către un script shell.

Rețineți că, spre deosebire de systemd, cron nu poate detecta dacă sesiunea grafică a fost sau nu încărcată. Trebuie să specificați o perioadă de așteptare estimată până când serverul X se încarcă și un identificator de afișare. Puteți afla despre ID-ul dvs. de afișare executând comanda de mai jos:

$aruncat $ DISPLAY

Întârzierea înainte de executarea comenzii sau scriptului depinde de configurația sistemului și de timpul de pornire.

Rc.local

O altă metodă pentru a rula scripturi și comenzi la pornire este utilizarea fișierului rc.local. Rețineți că, în timpul testării mele, nu am putut amâna executarea scriptului până când sesiunea grafică a fost live. Adăugarea oricărei întârzieri de repaus duce la întârzierea afișării ecranului de conectare în sine. Din această cauză, nu am avut succes în rularea aplicațiilor grafice la pornire folosind fișierul rc.local. Editarea rc.local necesită, de asemenea, acces root, spre deosebire de toate celelalte exemple explicate mai sus.

Pentru a adăuga comenzi / scripturi în fișierul rc.local, rulați comanda de mai jos (creează un nou fișier rc.local dacă nu există):

$sudo nano /etc./rc.local

Adăugați comenzile între #! / bin / bash și ieșire 0 linii, așa cum se arată mai jos:

#! / bin / bash
cale / către / meu_script.sh
ieșire 0

Faceți fișierul rc.local executabil executând comanda de mai jos:

$sudo chmod+ x/etc./rc.local

Doar reporniți pentru ca scriptul de pornire să aibă efect.

Concluzie

Acestea sunt câteva metode care pot fi utilizate pentru a rula automat scripturi și aplicații la pornire. Dacă doriți să rulați scripturi care nu necesită acces root, vă recomand să utilizați aplicația GUI pentru aplicații de pornire. Dacă doriți să rulați aplicații și scripturi cu acces root, v-aș sugera să creați un serviciu systemd la nivel de sistem.

Despre autor

Nitesh Kumar

Sunt dezvoltator de software independent și scriitor de conținut care iubește Linux, software-ul open source și comunitatea de software gratuit.

Vezi toate postările