Cum să rezolvați problemele de pornire a aplicațiilor Linux cu ajutorul comenzii journalctl

Rareori ceva nu merge bine cu Linux, dar asta nu înseamnă că sistemul de operare este imun la probleme. Din când în când, voi instala un serviciu sau o aplicație nouă și apoi voi încerca să o pornesc cu comanda:

sudo systemctl start NAME

NAME este numele aplicației sau al serviciului.

Au existat cazuri în  care serviciul să nu pornească sau să funcționeze corect. Când se înâmplă acest lucru, încotro vă îndreptați? Puteți întotdeauna să verificați fișierele jurnal (de obicei cel mai bun loc de unde să începeți) sau să apelați la o altă comandă care însoțește systemctl. Această comandă este journalctl.

Comanda journalctl interoghează jurnalul systemd și listează conținutul unui jurnal care ar putea include informații despre motivul pentru care o anumită aplicație sau un anumit serviciu nu funcționează corect. Adesea, atunci când încercați să porniți un serviciu cu systemctl, dacă serviciul nu pornește corect (sau nu pornește deloc), veți vedea o sugestie în ieșire de a utiliza comanda journalctl pentru a afla ce s-a întâmplat.

Permiteți-mi să vă arăt cum să utilizați această comandă, astfel încât să nu mai fiți nevoiți să nu știți de ce lucrurile nu merg conform planului.

Cum să utilizați journalctl

De ce aveți nevoie: Singurul lucru de care aveți nevoie pentru această sarcină este o distribuție Linux care utilizează systemd, adică majoritatea distribuțiilor majore.

1. Utilizare de bază

Primul lucru pe care ar trebui să-l încercați este să rulați journalctl fără nicio opțiune, ceea ce este simplu:

journalctl

Ceea ce veți vedea este întreaga ieșire a jurnalului systemd. Din această ieșire, ați putea găsi informații care să vă ajute să vă rezolvați problema.

Când am executat comanda, au apărut doar 41 de linii de ieșire. Am văzut cazuri în care au existat sute de linii de ieșire, ceea ce a făcut ca utilizarea comenzii fără argumente sau opțiuni să fie puțin nefolositoare.

Din fericire, puteți filtra o mare parte din acest zgomot.

2. Verificare unui serviciu specific

De exemplu, SSH are probleme la pornire. Pentru a depana această problemă, puteți executa comanda:

systemctl -u ssh

În acest caz, -u înseamnă unit (unitate), sau o unitate systemd specifică (gândiți-vă la „serviciu”).

Rezultatul comenzii de mai sus ar putea arăta cam așa:

Jan 12 09:55:42 pop-os systemd[1]: Starting OpenBSD Secure Shell server...
Jan 12 09:55:42 pop-os sshd[3424]: Server listening on 0.0.0.0 port 22.
Jan 12 09:55:42 pop-os sshd[3424]: Server listening on :: port 22.
Jan 12 09:55:42 pop-os systemd[1]: Started OpenBSD Secure Shell server.
Jan 15 09:39:26 pop-os sshd[659190]: Invalid user jackwallen from 192.168.1.77 port 55040
Jan 15 09:39:29 pop-os sshd[659190]: pam_unix(sshd:auth): check pass; user unknown
Jan 15 09:39:29 pop-os sshd[659190]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.1.77
Jan 15 09:39:31 pop-os sshd[659190]: Failed password for invalid user jackwallen from 192.168.1.77 port 55040 ssh2
Jan 15 09:39:33 pop-os sshd[659190]: Connection closed by invalid user jackwallen 192.168.1.77 port 55040 [preauth]
Jan 15 09:39:39 pop-os sshd[659232]: Accepted password for jack from 192.168.1.77 port 55049 ssh2
Jan 15 09:39:39 pop-os sshd[659232]: pam_unix(sshd:session): session opened for user jack(uid=1000) by (uid=0)

După cum puteți vedea, în acest caz, SSH rulează conform așteptărilor, dar a existat o încercare eșuată de conectare (deoarece s-a uitat să se adauge un nume de utilizator valid atunci când s-a conecat la iMac).

3. Monitorizarea rezultatului

Există o modalitate și mai bună de a depana un serviciu cu journalctl. Să spunem că SSH rulează, dar are probleme cu acceptarea conexiunilor (sau orice altă problemă care s-ar putea înâmpla). Puteți „urmări” rezultatul (care tipărește informații în timp real pe măsură ce se întâmplă), astfel:

journaltcl -xefu ssh

Această comandă nu numai că vă va spune starea de pornire și de funcționare a serviciului, dar va lista și cele mai recente intrări înregistrare în jurnal pentru serviciul respectiv. Pentru închidere, utilizați comanda rapidă de tastatură Ctrl+c. Pentru cei care doresc să le afle, iată o explicație a opțiunilor:

  • x – adăugați o explicație la liniile de jurnal din catalogul de mesaje
  • e – săriți imediat la sfârșitul jurnalului în cadrul instrumentului pager implicit
  • f – urmărie (tipărirea continuă a noilor intrări pe măsură ce acestea sunt înregistrare)
  • u – unitate (așa cum s-a explicat mai sus)

4. Vizualizarea unui interval de timp

De asemenea, este posibil să vizualizați un anumit interval de timp cu journalctl. Să spunem că doriți să vizualizați numai intrările înregistrate începând cu 20 ianuarie la ora 10:00. Comanda ar fi:

journalctl --since "2025-01-20 10:00:00"

Veți vedea fiecare intrare înregistrată de la ora 10:00 până la ora curentă.

Puteți face acest interval și mai specific. Să spunem că doriți să vizualizați intrările înregistrate între orele 10:00 și 10:10. Comanda ar fi:

journalctl --since "2025-01-20 10:00:00" --until "2025-01-20 10:05:00"

Și aceasta, prieteni, este modul în care puteți utiliza journalctl pentru a depana probleme de pornire a aplicațiilor pe Linux.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *