Systemd este un sistem de ultimă generație și un manager de servicii pentru sistemele Linux: un înlocuitor de demon inițial destinat inițierii proceselor în paralel la pornirea sistemului. Acum este acceptat într-o serie de distribuții mainstream actuale, inclusiv Fedora, Debian, Ubuntu, OpenSuSE, Arch, RHEL, CentOS etc.
Mai devreme, am explicat poveste din spatele „init” și „systemd”; unde am discutat despre ce sunt cei doi demoni, de ceinit„Tehnic trebuia înlocuit cu„systemd'Precum și principalele caracteristici ale systemd.
Unul dintre principalele avantaje ale systemd față de alte sisteme inițiale comune este suportul pentru gestionarea centralizată a sistemului și a proceselor de înregistrare folosind un jurnal. În acest articol, vom învăța cum să gestionăm și să vizualizăm mesajele jurnal în sistem folosind journalctl comandă în Linux.
Important: Înainte de a merge mai departe în acest ghid, vă recomandăm să aflați cum să gestionați Servicii și unități „Systemd” care utilizează „Systemctl”
comandă și, de asemenea creați și rulați noi unități de servicii în systemd folosind scripturi shell în Linux. Cu toate acestea, dacă sunteți bine cu toate cele de mai sus, continuați să citiți.journald este un daemon care adună și scrie intrări în jurnal din întregul sistem; acestea sunt în esență mesaje de încărcare, mesaje de la kernel și de la syslog sau diverse aplicații și stochează toate mesajele într-o locație centrală - fișier jurnal.
Puteți controla comportamentul journald prin fișierul său de configurare implicit: /etc/systemd/journald.conf care este generat la momentul compilării. Acest fișier conține opțiuni ale căror valori le puteți modifica în funcție de cerințele dvs. de mediu local.
Mai jos este un eșantion de aspectul fișierului, vizualizat folosind comandă pisică.
$ cat /etc/systemd/journald.conf
Fișier de configurare Journald
# Pentru detalii, consultați journald.conf (5). [Jurnal] # Stocare = automată. # Compres = da. # Sigiliul = da. # SplitMode = uid. # SyncIntervalSec = 5m. # RateLimitInterval = 30s. # RateLimitBurst = 1000. # SystemMaxUse = # SystemKeepFree = # SystemMaxFileSize = # SystemMaxFiles = 100. # RuntimeMaxUse = # RuntimeKeepFree = # RuntimeMaxFileSize = # RuntimeMaxFiles = 100. # MaxRetentionSec = # MaxFileSec = 1 lună. # ForwardToSyslog = da. # ForwardToKMsg = nu. # ForwardToConsole = nu. # ForwardToWall = da. # TTYPath = / dev / console. # MaxLevelStore = depanare. # MaxLevelSyslog = depanare. # MaxLevelKMsg = notificare. # MaxLevelConsole = informații. # MaxLevelWall = emerg.
Rețineți că diferite pachete se instalează și utilizează extrase de configurație în /usr/lib/systemd/*.conf.d/ și configurațiile timpului de rulare pot fi găsite în /run/systemd/journald.conf.d/*.conf pe care s-ar putea să nu-l utilizați neapărat.
Un număr de distribuții Linux, inclusiv Ubuntu și derivatele sale, cum ar fi Linux Mint, nu permit stocarea persistentă a mesajelor de boot pe disc în mod implicit.
Este posibil să activați acest lucru setând „Depozitare”Opțiune la”persistent" așa cum se arată mai jos. Aceasta va crea fișierul /var/log/journal directorul și toate fișierele jurnal vor fi stocate sub acesta.
$ sudo vi /etc/systemd/journald.conf SAU. $ sudo nano /etc/systemd/journald.conf
[Jurnal] Depozitare = persistent.
Pentru setări suplimentare, găsiți semnificația tuturor opțiunilor care ar trebui configurate sub "[Jurnal]" secțiunea prin tastare.
$ man journald.conf.
Pentru o gestionare fiabilă a jurnalelor în sistem folosind serviciul journald, asigurați-vă că setările de timp, inclusiv fusul orar, sunt corecte pe sistem.
Pentru a vizualiza setările curente ale datei și orei pe sistemul dvs., tastați.
$ timedatectl SAU. $ timedatectl status Ora locală: Joi 15.06.2017 13:29:09 EAT. Ora universală: joi 2017-06-15 10:29:09 UTC. Ora RTC: joi 15.06.2017 10:29:09. Fus orar: Africa / Kampala (EAT, +0300) Ora rețelei activată: da. NTP sincronizat: da RTC în TZ local: nu.
Pentru a seta fusul orar corect și eventual ora sistemului, utilizați comenzile de mai jos.
$ sudo timedatectl set-timezone Africa / Kampala. $ sudo timedatectl set-time „13:50:00”
journalctl este un utilitar utilizat pentru a vizualiza conținutul jurnalului systemd (care este scris de serviciul journald).
Pentru a afișa toate jurnalele colectate fără filtrare, tastați.
$ journalctl.
Vizualizați mesajele jurnal
- Jurnalele încep miercuri 2017-06-14 21:56:43 EAT, se încheie joi 2017-06-15 12:28:19 EAT. 14 iun 21:56:43 tecmint systemd-journald [336]: Jurnal de execuție (/ run / log / journal. 14 iunie 21:56:43 kernel tecmint: Initializarea cgroup subsys cpuset. 14 iun 21:56:43 kernel tecmint: Initializarea cgroup subsys cpu. 14 iunie 21:56:43 kernel tecmint: Initializarea cgroup subsys cpuacct. 14 iunie 21:56:43 kernel tecmint: versiunea Linux 4.4.0-21-generic ([e-mail protejat]) 14 iunie 21:56:43 kernel tecmint: Linie de comandă: BOOT_IMAGE = / boot / vmlinuz-4.4.0-21- 14 iunie 21:56:43 nucleu tecmint: nucleu acceptat cpus: 14 iun 21:56:43 nucleu tecmint: Intel GenuineIntel. 14 iunie 21:56:43 kernel tecmint: AMD AuthenticAMD. 14 iunie 21:56:43 nucleu tecmint: Centaur CentaurHauls. 14 iunie 21:56:43 kernel tecmint: x86 / fpu: xstate_offset [2]: 576, xstate_sizes [2] 14 iunie 21:56:43 kernel tecmint: x86 / fpu: Suporta caracteristica XSAVE 0x01: 'x87 flo. 14 iun 21:56:43 kernel tecmint: x86 / fpu: Suporta caracteristica XSAVE 0x02: 'SSE reg. 14 iun 21:56:43 kernel tecmint: x86 / fpu: Suporta caracteristica XSAVE 0x04: 'AVX reg. 14 iun 21:56:43 kernel tecmint: x86 / fpu: Enabled xstate features 0x7, context si. 14 iunie 21:56:43 kernel tecmint: x86 / fpu: Utilizarea comutatoarelor de context FPU „dornice”. 14 iun 21:56:43 nucleu tecmint: e820: hartă RAM fizică furnizată de BIOS: 14 iun 21:56:43 nucleu tecmint: BIOS-e820: [mem 0x0000000000000000-0x00000000000. 14 iun 21:56:43 nucleul tecmint: BIOS-e820: [mem 0x0000000000090000-0x00000000000. 14 iun 21:56:43 nucleul tecmint: BIOS-e820: [mem 0x0000000000100000-0x000000001ff. 14 iun 21:56:43 nucleul tecmint: BIOS-e820: [mem 0x0000000020000000-0x00000000201. 14 iun 21:56:43 nucleul tecmint: BIOS-e820: [mem 0x0000000020200000-0x00000000400.
Puteți afișa o listă de numere de încărcare (în raport cu boot-ul curent), ID-urile acestora și marcajele de timp ale primului și ultimului mesaj corespunzător boot-ului cu --list-boots
opțiune.
$ journalctl --list-boots -1 9fb590b48e1242f58c2579defdbbddc9 Joi 2017-06-15 16:43:36 EAT — Joi 2017-06-15 1 0 464ae35c6e264a4ca087949936be434a Joi 2017-06-15 16:47:36 EAT — Joi 2017-06- 15 1
Pentru a vizualiza intrările jurnalului din boot-ul curent (numărul 0), utilizați -b
comutați astfel (la fel ca ieșirea eșantionului de mai sus).
$ journalctl -b.
și pentru a vedea un jurnal din boot-ul anterior, utilizați -1
indicatorul relativ cu -b
opțiune ca mai jos.
$ journalctl -b -1.
Alternativ, utilizați ID-ul de boot astfel.
$ journalctl -b 9fb590b48e1242f58c2579defdbbddc9.
Pentru a utiliza timpul în formatul Timp universal coordonat (UTC), adăugați fișierul --UTC
opțiuni după cum urmează.
$ journalctl --utc.
Pentru a vedea toate intrările de la o anumită dată și oră, de ex. 15 iunie 2017 la 8:15 AM, tastați această comandă.
$ journalctl --de când "2017-06-15 08:15:00" $ journalctl --de azi. $ journalctl --de ieri.
Pentru a vizualiza mesajele de jurnal recente (10 în mod implicit), utilizați -n
pavilion așa cum se arată mai jos.
$ journalctl -n. $ journalctl -n 20
Pentru a vedea numai mesajele kernel, similar cu comanda dmesg ieșire, puteți utiliza fișierul -k
steag.
$ journalctl -k $ journalctl -k -b $ journalctl -k -b 9fb590b48e1242f58c2579defdbbddc9.
Pentru a vizualiza toate intrările de jurnal pentru o anumită unitate, utilizați -u
comutați după cum urmează.
$ journalctl -u apache2.service.
Pentru a face zero până la boot-ul curent, tastați această comandă.
$ journalctl -b -u apache2.service.
Pentru a afișa jurnalele de la boot-ul anterior, utilizați acest lucru.
$ journalctl -b -1 -u apache2.service.
Mai jos sunt câteva alte comenzi utile:
$ journalctl -u apache2.service $ journalctl -u apache2.service --de azi. $ journalctl -u apache2.service -u nagios.service --de ieri.
Pentru a vizualiza jurnalele generate de un anumit proces, specificați că este PID astfel.
$ journalctl _PID = 19487. $ journalctl _PID = 19487 --de astăzi. $ journalctl _PID = 19487 --de ieri.
Pentru a vizualiza jurnalele generate de un anumit utilizator sau grup, specificați ID-ul utilizatorului sau al grupului astfel.
$ journalctl _UID = 1000. $ journalctl _UID = 1000 --de astăzi. $ journalctl _UID = 1000 -b -1 --de astăzi.
Pentru a afișa toate jurnalele generate de un fișier (posibil un executabil), cum ar fi executabilul D-Bus sau executabile bash, pur și simplu tastați.
$ journalctl / usr / bin / dbus-daemon. $ journalctl / usr / bin / bash.
De asemenea, puteți filtra rezultatele pe baza priorităților mesajelor sau a intervalelor de priorități folosind -p
steag. Valorile posibile sunt: 0 - emerg, 1 - alert, 2 - crit, 3 - err, 4 - avertisment, 5 - notificare, 6 - info, 7 - debug):
$ journalctl -p eroare.
Pentru a specifica un interval, utilizați formatul de mai jos (reveniți la avertisment).
$ journalctl -p 1..4. SAU. $ journalctl -p emer..avertisment.
Puteți viziona practic jurnalele pe măsură ce sunt scrise cu -f
opțiune (similară cu coada -f funcționalitate).
$ journalctl -f.
Dacă doriți să controlați formatarea de ieșire a intrărilor din jurnal, adăugați fișierul -o
semnalizați și utilizați aceste opțiuni: cat, export, json, json-pretty, json-sse, short, short-iso, short-monoton, short-precise și verbose (verificați semnificația opțiunilor în pagina de manual:
pisică opțiunea afișează mesajul real al fiecărei intrări de jurnal fără metadate (timestamp și așa mai departe).
$ journalctl -b -u apache2.service -o cat.
Pentru a verifica fișierul jurnal pentru consistență internă, utilizați --verifica
opțiune. Dacă totul este bine, rezultatul ar trebui să indice un PASS.
$ journalctl --verify PASS: /run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/system.journal 491f68: Date neutilizate (entry_offset == 0) PASS: / run / log / journal / 2a5d5f96ef9147c0b35535562b32[e-mail protejat]9866c3d4d.journal. PASS: / run / log / journal / 2a5d5f96ef9147c0b35535562b32d0ff /[e-mail protejat]5d8945a9e.journal. PASS: / run / log / journal / 2a5d5f96ef9147c0b35535562b32d0ff /[e-mail protejat]1becab02f.journal. PASS: / run / log / journal / 2a5d5f96ef9147c0b35535562b32d0ff /[e-mail protejat]01cfcedff.journal.
De asemenea, puteți afișa utilizarea curentă a discului pentru toate fișierele jurnal cu --disk-usage
Opțiuni. Afișează suma utilizării pe disc a tuturor fișierelor jurnal arhivate și active:
$ journalctl --disk-usage.
Pentru a șterge fișierele de jurnal vechi (arhivate) executați comenzile de mai jos:
$ sudo journalctl --vacuum-size = 50M # șterge fișiere până când spațiul pe disc pe care îl folosesc scade sub dimensiunea specificată. $ sudo journalctl --vacuum-time = 1years #delete fișiere astfel încât toate fișierele jurnal să nu conțină date mai vechi decât intervalul de timp specificat. $ sudo journalctl --vacuum-files = 4 # șterge fișiere astfel încât să nu rămână mai mult decât numărul specificat de fișiere jurnal separate în locația de stocare.
Nu în ultimul rând, puteți instrui journald să rotească fișierele jurnal cu --roti
opțiune. Rețineți că această directivă nu se întoarce până la finalizarea operației de rotație:
$ sudo journalctl --rotate.
Pentru un ghid de utilizare detaliat și opțiuni, vizualizați pagina manuală journalctl după cum urmează.
$ man journalctl.
Consultați câteva articole utile.
Atât deocamdată. Utilizați feedback-ul de mai jos pentru a pune întrebări sau pentru a adăuga păreri despre acest subiect.