Kako samodejno izvajati ukaze/skripte med ponovnim zagonom ali zagonom


Vedno sem navdušen nad dogajanjem v zakulisju, ko zaženem sistem Linux in se prijavim. S pritiskom gumba za vklop na golo kovino ali zagonom navideznega stroja sprožite vrsto dogodkov, ki vodijo do popolnoma funkcionalnega sistema - včasih v manj kot minuti. Enako velja, ko se odjavite in/ali zaustavite sistem.

Zaradi tega je to bolj zanimivo in zabavno dejstvo, da lahko operacijski sistem izvaja določena dejanja, ko se zažene in ko se odjavite ali odjavite.

V tem distro-agnostičnem članku bomo razpravljali o tradicionalnih metodah za doseganje teh ciljev v Linuxu.

Opomba: Bash bomo uporabili kot glavno lupino za dogodke prijave in odjave. Če slučajno uporabite drugega, lahko nekatere od teh metod delujejo ali pa tudi ne. Če ste v dvomih, glejte dokumentacijo vaše lupine.

Izvajanje skriptov Linuxa med ponovnim zagonom ali zagonom

Obstajata dve tradicionalni metodi za izvajanje ukaza ali zagon skriptov med zagonom:

Poleg običajne oblike (minuta/ura/dan meseca/mesec/dan v tednu), ki se pogosto uporablja za označevanje urnika, cron načrtovalec omogoča tudi uporabo @reboot . Ta direktiva, ki ji sledi absolutna pot do skripta, bo povzročila njegovo zagon, ko se stroj zažene.

Vendar imata ta pristop dva opozorila:

  1. a) da se mora izvajati demon cron (kar velja v običajnih okoliščinah) in
  2. b) skript ali datoteka crontab mora vsebovati spremenljivke okolja (če obstajajo), ki bodo potrebne (za več podrobnosti glejte to nit StackOverflow).

Ta metoda velja tudi za distribucije, ki temeljijo na systemd. Če želite, da ta metoda deluje, morate /etc/rc.d/rc.local odobriti dovoljenja za izvajanje, kot sledi:

# chmod +x /etc/rc.d/rc.local

in dodajte svoj skript na dnu datoteke.

Naslednja slika prikazuje, kako zagnati dva vzorčna skripta ( /home/gacanepa/script1.sh in /home/gacanepa/script2.sh ) z uporabo opravila cron in rc. lokalni oziroma njihovi rezultati.

#!/bin/bash
DATE=$(date +'%F %H:%M:%S')
DIR=/home/gacanepa
echo "Current date and time: $DATE" > $DIR/file1.txt
#!/bin/bash
SITE="linux-console.net"
DIR=/home/gacanepa
echo "$SITE rocks... add us to your bookmarks." > $DIR/file2.txt

Upoštevajte, da je treba obema skriptama predhodno dodeliti dovoljenja za izvajanje:

$ chmod +x /home/gacanepa/script1.sh
$ chmod +x /home/gacanepa/script2.sh

Izvajanje skriptov Linuxa pri prijavi in odjavi

Če želite zagnati skript ob prijavi ali odjavi, uporabite ~ .bash_profile oziroma ~ .bash_logout . Najverjetneje boste morali slednjo datoteko ustvariti ročno. Preprosto spustite vrstico, ki prikliče vaš skript, na dno vsake datoteke na enak način kot prej in že ste pripravljeni.

V tem članku smo razložili, kako zagnati skript ob ponovnem zagonu, prijavi in odjavi. Če si omislite druge metode, ki bi jih lahko tukaj vključili, vas prosimo, da nanje opozorite v spodnjem obrazcu za komentar. Veselimo se vaših odzivov!