Skip to main content

Cyber AI România

Joi, 22 octombrie 2026

Cum creezi un script Bash care verifică dacă un serviciu Linux rulează

Un serviciu Linux care se oprește fără să observi poate însemna un site indisponibil, un backup ratat sau o aplicație internă care nu mai răspunde. Pentru verificări simple, nu ai nevoie de o platformă mare de monitorizare. Un script Bash mic, bine scris, poate spune rapid dacă un serviciu rulează și poate fi folosit apoi în cron, într-un dashboard intern sau într-o verificare manuală.

Exemplul de mai jos este defensiv și de diagnostic. Nu repară automat serviciul, nu modifică configurații și nu repornește procese fără decizia administratorului. Scopul lui este să răspundă clar la întrebarea: „serviciul acesta este activ acum?”

Ce verifică, de fapt, scriptul

Pe sistemele Linux care folosesc systemd, comanda centrală este systemctl. Documentația systemd arată că systemctl is-active verifică dacă una sau mai multe unități sunt active, adică rulează, și întoarce codul 0 dacă cel puțin una este activă. Cu opțiunea –quiet, comanda nu mai afișează starea pe ecran, ci lasă scriptul să decidă ce mesaj arată.

Dacă nu ești sigur ce este un serviciu Linux sau cum se citește starea lui, merită să parcurgi mai întâi ghidul despre servicii Linux și systemctl. Scriptul de aici pornește de la aceeași idee, dar o transformă într-o verificare repetabilă.

Un exemplu realist este verificarea serviciului ssh, nginx, apache2, mariadb sau cron. Numele exact depinde de distribuție și de pachetul instalat, deci trebuie verificat pe sistemul tău cu systemctl list-units –type=service sau cu documentația aplicației.

Structura minimă a scriptului

Un script Bash util are nevoie de trei lucruri: numele serviciului, verificarea propriu-zisă și un cod de ieșire clar. Codul de ieșire contează deoarece alte unelte pot interpreta rezultatul fără să citească textul afișat.

Pentru un fișier numit verifica-serviciu.sh, structura poate fi aceasta, scrisă ca linii separate în fișier:

  • #!/usr/bin/env bash
  • SERVICE=”$1″
  • if [ -z “$SERVICE” ]; then
  • echo “Folosește: verifica-serviciu.sh nume-serviciu”
  • exit 2
  • fi
  • if systemctl is-active –quiet “$SERVICE”; then
  • echo “OK: serviciul $SERVICE rulează”
  • exit 0
  • else
  • echo “ALERTĂ: serviciul $SERVICE nu rulează”
  • exit 1
  • fi

Prima linie spune sistemului că fișierul trebuie rulat cu Bash. Variabila SERVICE preia primul argument din linia de comandă. Testul [ -z “$SERVICE” ] verifică dacă argumentul lipsește. Manualul GNU Coreutils pentru test arată că expresia returnează 0 când condiția este adevărată și 1 când este falsă; de aceea este potrivită în instrucțiuni if.

Dacă vrei să înțelegi mai bine această parte, ai un punct de pornire bun în articolul despre variabile în Bash pentru scripturi mai clare și în ghidul despre citirea argumentelor din linia de comandă într-un script Bash.

Cum îl salvezi și îl rulezi

Pentru o testare locală, poți salva fișierul în directorul tău de lucru. De exemplu, creezi fișierul verifica-serviciu.sh, introduci liniile de mai sus, apoi îi dai drept de execuție cu chmod +x verifica-serviciu.sh.

Rularea se face simplu: ./verifica-serviciu.sh ssh sau ./verifica-serviciu.sh nginx, în funcție de serviciul verificat. Dacă serviciul rulează, scriptul afișează mesajul OK și iese cu 0. Dacă nu rulează, afișează alertă și iese cu 1. Dacă nu primește niciun nume de serviciu, iese cu 2, pentru că problema este folosirea greșită a scriptului.

Această separare este importantă. Un serviciu oprit nu este aceeași situație cu un script apelat fără argumente. Pentru monitorizare, automatizare sau depanare, diferența ajută la mesaje mai clare și la mai puține alarme false.

Ce să nu faci în primul script

Nu pune repornirea automată ca reacție implicită. O comandă de tip restart poate ascunde cauza reală: configurare greșită, certificat expirat, spațiu epuizat, permisiuni schimbate sau dependențe indisponibile. Într-un mediu de producție, repornirea trebuie decisă după verificarea jurnalelor și a impactului.

Nu rula scriptul cu privilegii de root dacă verificarea nu are nevoie de ele. Pentru systemctl is-active, în multe cazuri este suficient un utilizator obișnuit. Dacă sistemul cere permisiuni suplimentare pentru anumite servicii sau medii restricționate, regula corectă este să ajustezi accesul minim necesar, nu să rulezi totul cu sudo din comoditate.

Nu publica ieșiri complete din loguri, nume interne de servere, căi sensibile sau detalii de infrastructură. Un script de verificare trebuie să spună starea, nu să expună harta sistemului.

Cum îl poți îmbunătăți fără să îl complici

După ce varianta simplă funcționează, poți adăuga un timestamp în mesaj, o listă controlată de servicii permise sau scrierea rezultatului într-un fișier local de log. Poți verifica și mai multe servicii, dar este mai bine să începi cu unul singur și să testezi clar codurile de ieșire.

Dacă ești la început, articolul despre primul script Bash pentru sarcini simple te ajută să construiești baza înainte să treci la verificări mai ample. Iar când scriptul ajunge să fie folosit periodic, documentează unde este salvat, cine îl rulează și ce înseamnă fiecare cod de ieșire.

Un script mic, cu rezultat previzibil, este mai valoros decât unul lung care încearcă să repare totul singur. Pentru verificarea unui serviciu, simplitatea este exact ce îți trebuie: un nume, o comandă systemctl, un mesaj clar și un cod de ieșire corect.

Întrebări frecvente

Ce comandă verifică dacă serviciul rulează?

În articol este folosită comanda systemctl is-active –quiet, care verifică starea serviciului și lasă scriptul să interpreteze codul de ieșire.

De ce primește scriptul numele serviciului ca argument?

Așa poți folosi același script pentru ssh, nginx, apache2 sau alt serviciu, fără să modifici fișierul de fiecare dată.

Scriptul trebuie rulat cu sudo?

Nu în mod implicit. Pentru simpla verificare cu systemctl is-active, de multe ori este suficient un utilizator obișnuit, iar privilegiile ridicate trebuie folosite doar când sunt necesare.

De ce nu repornește automat serviciul?

Pentru că repornirea automată poate ascunde cauza reală a problemei. Scriptul de aici este pentru diagnostic și alertare, nu pentru modificări asupra sistemului.

Surse

Facebook
X
WhatsApp
Cum creezi un script Bash care verifică dacă un serviciu Linux rulează

Te-ar putea interesa si: