Cum să executați automat comenzile/scripturile în timpul repornirii sau pornirii


Sunt întotdeauna fascinat de lucrurile care se întâmplă în culise când pornesc un sistem Linux și mă conectez. Apăsând butonul de pornire de pe un metal gol sau pornind o mașină virtuală, puneți în mișcare o serie de evenimente care duc la un sistem complet funcțional – uneori în mai puțin de un minut. Același lucru este valabil atunci când vă deconectați și/sau opriți sistemul.

Ceea ce face ca acest lucru să fie mai interesant și distractiv este faptul că sistemul de operare poate executa anumite acțiuni atunci când pornește și când vă conectați sau deconectați.

În acest articol distro-agnostic vom discuta despre metodele tradiționale pentru atingerea acestor obiective în Linux.

Notă: vom presupune utilizarea Bash ca shell principal pentru evenimentele de conectare și deconectare. Dacă se întâmplă să utilizați una diferită, unele dintre aceste metode pot funcționa sau nu. Dacă aveți îndoieli, consultați documentația shell-ului dvs.

Executarea scripturilor Linux în timpul repornirii sau pornirii

Există două metode tradiționale de a executa o comandă sau de a rula scripturi în timpul pornirii:

Metoda #1 - Folosiți un job cron

Pe lângă formatul obișnuit (minut/oră/zi a lunii/luna/ziua săptămânii) care este utilizat pe scară largă pentru a indica un program, programatorul cron permite și utilizarea @reboot. Această directivă, urmată de calea absolută către script, o va face să ruleze atunci când mașina pornește.

Cu toate acestea, există două avertismente la această abordare:

  1. a) daemonul cron trebuie să ruleze (ceea ce este cazul în circumstanțe normale) și
  2. b) scriptul sau fișierul crontab trebuie să includă variabilele de mediu (dacă există) care vor fi necesare (consultați acest fir StackOverflow pentru mai multe detalii).

Metoda #2 – Utilizați /etc/rc.d/rc.local

Această metodă este valabilă chiar și pentru distribuțiile bazate pe systemd. Pentru ca această metodă să funcționeze, trebuie să acordați permisiuni de execuție pentru /etc/rc.d/rc.local după cum urmează:

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

și adăugați scriptul în partea de jos a fișierului.

Următoarea imagine arată cum să rulați două exemple de script-uri (/home/gacanepa/script1.sh și /home/gacanepa/script2.sh) folosind un cron< job și, respectiv, rc.local și rezultatele acestora.

#!/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

Rețineți că ambelor scripturi trebuie să li se acorde anterior permisiuni de execuție:

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

Executarea scripturilor Linux la conectare și deconectare

Pentru a executa un script la conectare sau la deconectare, utilizați ~.bash_profile și, respectiv, ~.bash_logout. Cel mai probabil, va trebui să creați manual acest din urmă fișier. Aruncă o linie care invocă scriptul tău în partea de jos a fiecărui fișier în același mod ca înainte și ești gata să pleci.

rezumat

În acest articol, am explicat cum să rulați scriptul la repornire, conectare și deconectare. Dacă vă puteți gândi la alte metode pe care le-am fi putut include aici, nu ezitați să utilizați formularul de comentarii de mai jos pentru a le indica. Asteptam sa auzim de tine!