Kaip automatiškai paleisti „Linux“ komandas ir scenarijus iš naujo paleidžiant sistemą

How Run Linux Commands



Automatinis programų ir scenarijų paleidimas paleidžiant gali būti naudingas automatizuojant įprastas įkrovos užduotis ir įvykius. Šiame straipsnyje bus paaiškinta keletas metodų, kuriuos galima naudoti paleidžiant programas ir scenarijus iš naujo paleidžiant arba prisijungus.

Paleidimo programos

„Ubuntu“ ir kituose GNOME platinimuose yra programa, tiesiog vadinama „Startup Applications“. Jis gali būti naudojamas programoms ir scenarijams, kurie veikia iš naujo paleidus sistemą arba prisijungus, valdyti.







Paleiskite „Startup Applications“ programą iš programų paleidimo priemonės ir spustelėkite mygtuką „Pridėti“, kad pridėtumėte naują įrašą.





Užpildykite pavadinimų ir komandų laukus pagal savo poreikius, tada spustelėkite mygtuką Pridėti, kad užbaigtumėte naujo įrašo kūrimą. Įrašas, sukurtas žemiau esančioje ekrano kopijoje, atsiųs priminimą „Padaryti atsarginę kopiją“ kaip sistemos pranešimą apie kiekvieną perkrovimą / prisijungimą. Galite jį pakeisti savo komanda arba visu savo „bash“ scenarijaus keliu. Taip pat galite naudoti bet kokias esamas sistemos komandas ar vykdomuosius failus, paprastai esančius įvairiuose failų sistemos šiukšliadėžės aplankuose.





Kaip minėta aukščiau, atsarginis priminimas rodomas kiekvieną kartą paleidus iš naujo.



Sistem

„Systemd“ yra demonas ir paslaugų valdytojas, kuriame yra įvairių paslaugų, skirtų sistemos procesams ir OS komponentams valdyti. Supaprastinta forma jis paprastai naudojamas paslaugoms pradėti ir baigti nauju įkrovos ciklu.

„Systemd“ gali būti naudojamas automatiškai paleisti programą arba paleisti scenarijų naujo įkrovos metu. Norėdami sukurti tą patį aukščiau aprašytą pranešimą apie atsarginę kopiją, pirmiausia turite sukurti reikiamus aplankus ir failą vykdydami toliau nurodytas komandas.

$mkdir -p~/.konfigūruoti/sistema/Vartotojas
$nano~/.konfigūruoti/sistema/Vartotojas/backup_reminder.service

Pakeiskite „nano“ savo mėgstamo teksto redaktoriaus komanda. Pakeiskite „backup_reminder“ kitu norimu pavadinimu.

Įklijuokite žemiau esantį kodą į failą backup_reminder.service, sukurtą naudojant aukščiau pateiktą komandą.

[Vienetas]
Aprašymas = siunčia atsarginį priminimą kiekvieną kartą paleidus iš naujo
PartOf = graphical-session.target

[Paslauga]
ExecStart = bash -c 'sleep 10; pranešti-siųsti „Sukurti atsarginę kopiją“
Įveskite = onehot

[Diegti]
WantedBy = graphical-session.target

Aukščiau pateiktas kodas yra gana paprastas. Jis siunčia pranešimą „Padaryti atsarginę kopiją“ praėjus 10 sekundžių po grafinio seanso įkėlimo (kartą perkraunant ar prisijungus).

Vykdykite toliau pateiktas komandas, kad įjungtumėte paslaugą, kad ji galėtų automatiškai veikti kiekvieną kartą paleidus iš naujo.

$chmod 644~/.konfigūruoti/sistema/Vartotojas/backup_reminder.service
$ systemctl--Vartotojas įgalintibackup_reminder.service
$ systemctl--Vartotojasdemono perkrovimas
$ perkrovimas

Tai tik paprastas pavyzdys, kaip paleisti pagrindinę komandą paleidžiant naudojant „systemd“. Taip pat galite sukurti išplėstines paslaugas su keliomis sąlygomis ir keliomis komandomis. Norėdami gauti daugiau informacijos, apsilankykite sisteminiame vadove, vykdydami toliau nurodytą komandą:

$vyrassistema

Atminkite, kad šiame pavyzdyje paaiškinta, kaip sukurti naują paslaugą, kuriai nereikia root prieigos ir kuri tinka automatiškai paleidžiamoms programoms, kurioms nereikia root teisių. Jei norite automatiškai paleisti scenarijus, kuriems reikalinga root prieiga, turite sukurti naują systemd paslaugą kataloge/etc/systemd/system, o ne aplanke ~/.config/systemd/user ir praleisti-vartotojo jungiklį aukščiau paminėtose komandose.

Cronas Jobas

„Cron“ yra įrankis, galintis periodiškai vykdyti suplanuotas užduotis pagal vartotojo nurodytas sąlygas. Šios suplanuotos užduotys yra sukurtos „Crontab“ iš anksto nustatytu formatu. Paprasčiau tariant, „Crontab“ nurodo „Cron“, kokius darbus kokiu metu atlikti.

Kaip ir „systemd“, „crontab“ užduotys gali būti naudojamos paleisti programas ir automatiškai paleisti scenarijus paleidžiant. Norėdami pridėti naują „cron“ užduotį, paleiskite šią komandą:

$crontab-Ir

Teksto failo pabaigoje pridėkite šias eilutes (automatiškai paleidžiamas GNOME terminalas kiekvieną kartą paleidus iš naujo):

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

Galite naudoti savo komandą arba pateikti visą apvalkalo scenarijaus kelią.

Atminkite, kad skirtingai nei „systemd“, „cron“ negali aptikti, ar grafinė sesija buvo įkelta, ar ne. Turite nurodyti numatomą laukimo laikotarpį, kol įkeliamas X serveris, ir ekrano identifikatorių. Galite sužinoti apie savo rodomą ID vykdydami toliau nurodytą komandą:

$išmetė $ DISPLAY

Komandos ar scenarijaus vykdymo atidėjimas priklauso nuo jūsų sistemos konfigūracijos ir įkrovos laiko.

Rc.local

Kitas būdas paleisti scenarijus ir komandas paleidžiant yra naudoti rc.local failą. Atminkite, kad testuodamas negalėjau atidėti scenarijaus vykdymo, kol grafinė sesija buvo tiesiogiai. Pridedant bet kokį užmigdymo uždelsimą, vėluojama rodyti patį prisijungimo ekraną. Dėl šios priežasties man nepavyko paleisti grafinių programų paleidžiant naudojant rc.local failą. Redaguojant „rc.local“ taip pat reikalinga root prieiga, skirtingai nei visi kiti aukščiau aprašyti pavyzdžiai.

Norėdami pridėti komandų / scenarijų prie rc.local failo, paleiskite toliau pateiktą komandą (sukuria naują rc.local failą, jei jo nėra):

$sudo nano /ir kt/rc.local

Pridėkite savo komandas tarp #! /bin/bash ir išeiti iš 0 eilučių, kaip parodyta žemiau:

#! /bin/bash
kelias/į/my_script.sh
išeiti 0

Padarykite rc.local failą vykdomąjį vykdydami toliau pateiktą komandą:

$sudo chmod+ x/ir kt/rc.local

Tiesiog paleiskite iš naujo, kad paleisties scenarijus įsigaliotų.

Išvada

Tai keli metodai, kuriuos galima naudoti paleidžiant automatiškai paleisti scenarijus ir programas. Jei norite paleisti scenarijus, kuriems nereikia root prieigos, rekomenduočiau naudoti „Startup Applications“ GUI programą. Jei norite paleisti programas ir scenarijus su root prieiga, siūlyčiau sukurti sistemos lygio sisteminę paslaugą.

Apie autorių

Niteshas Kumaras

Esu laisvai samdomas programinės įrangos kūrėjas ir turinio rašytojas, mėgstantis „Linux“, atvirojo kodo programinę įrangą ir laisvos programinės įrangos bendruomenę.

Peržiūrėti visus įrašus