journalctl
Xizmatlarni boshqarish va Backend ilovani xizmat sifatida maqolalarida systemctl status xizmatning oxirgi bir nechta log qatorini ko'rsatishi ko'rildi. Lekin muammoni to'liq tushunish uchun ko'pincha bu bir necha qatordan ancha ko'proq narsa kerak bo'ladi: kechagi xato, oxirgi qayta yuklashdan beri yozilgan hamma narsa yoki muayyan vaqt oralig'idagi hodisalar. Bu systemd ning markazlashgan log o'qish vositasi — journalctl ning vazifasi. Alohida log fayllarini titkilash o'rniga u systemd-journald xizmati yig'gan hamma narsani bitta joydan, bitta izchil buyruq bilan qidirish imkonini beradi.
Nimalarni o'rganasiz
Bu maqola oxirida siz quyidagilarni qila olasiz:
systemd-journaldnima ekanini va u an’anaviy oddiy matnli log fayllaridan qanday farq qilishini tushuntirish;- asosiy filtrlarni qo'llash:
journalctl -u,-f,-b,--since/--until; - log jiddiylik darajasi (
priority) bo'yicha filtrlash; - journal saqlashni vaqtinchalikdan doimiyga o'tkazish;
- journal egallaydigan disk joyini kuzatish va cheklash.
systemd-journald: markazlashgan log yig'uvchi
systemd-journald — har bir unit’dan — xizmatlar, kernel, boot jarayoni — log xabarlarini yig'ib, ularni tuzilgan, binary formatda saqlaydigan systemd komponenti. /var/log/syslog kabi an’anaviy oddiy matnli fayllardan farqli o'laroq, journal har bir yozuvga qo'shimcha metama’lumotlar (qaysi unit, qaysi PID, qaysi boot) biriktiradi va bu keyinchalik aniq filtrlashni ancha osonlashtiradi.
● systemd-journald.service - Journal Service
Loaded: loaded (/lib/systemd/system/systemd-journald.service; static)
Active: active (running) since Fri 2026-07-24 08:12:01 UTC; 4h ago
journalctl — shu xizmat yig'gan narsalarni o'qish uchun ishlatiladigan klient buyrug'i; u o'zi hech narsa yozmaydi, faqat so'rov asosida mavjud journal’ni ko'rsatadi.
Asosiy chiqishni ko'rish
Argumentsiz journalctl har bir unit’ning butun log'ini eng eski yozuvdan boshlab, xronologik tartibda, less kabi pager’da ochib ko'rsatadi (q bilan chiqiladi). Bu odatda bir vaqtda juda ko'p ma’lumot, shuning uchun amalda u deyarli har doim filtr bilan birga ishlatiladi.
Unit bo'yicha filtrlash
-u (--unit) faqat nomlangan unit’ga tegishli yozuvlarni ko'rsatadi. Bu eng ko'p ishlatiladigan filtr, chunki muayyan xizmat muammosini tekshirish uchun odatda faqat o'sha xizmatning o'z log'lari kerak bo'ladi.
Bir nechta unit’ni birga ko'rish:
Real vaqtda kuzatish
-f (--follow) tail -f kabi ishlaydi — yangi yozuvlar kelishi bilan ekranda paydo bo'ladi, Ctrl+C bilan to'xtatiladi. Yangi ishga tushirilgan xizmatni, masalan Backend ilovani xizmat sifatida maqolasidagi backend-demo.service ni darhol kuzatishning eng qulay usuli shu.
Vaqt bo'yicha filtrlash
journalctl --since "1 hour ago"
journalctl --since "2026-07-24 09:00:00" --until "2026-07-24 10:00:00"
journalctl --since today
--since va --until moslashuvchan, odam o'qishi oson formatlarni qabul qiladi ("yesterday", "1 hour ago" yoki aniq sana va vaqt). Muayyan oraliqda nima bo'lganini tiklashda — "kecha soat 14:00 atrofida nima bo'ldi" — bu eng tez yo'l.
Boot bo'yicha filtrlash
-b (--boot) oldingi sessiyalardagi eski yozuvlarni chiqarib tashlab, faqat joriy boot’dan beri yozilgan yozuvlarni ko'rsatadi. Bu ayniqsa Boot jarayoni va GRUB maqolasida ko'rilgan boot paytidagi muammolarni aniqlashda foydali.
Oldingi boot’larni ro'yxatlash va ulardan birini tanlash:
-b -1 oldingi boot’ning (joriydan bitta oldingi) log'larini ko'rsatadi. Masalan, server kutilmaganda qayta yuklangan va sababni o'sha boot’ning oxirgi yozuvlaridan topish kerak bo'lganda foydali.
Log ustuvorligi bo'yicha filtrlash
-p (--priority) syslog standartidagi jiddiylik darajalari bo'yicha filtrlaydi:
| Daraja | Nomi | Ma’nosi |
|---|---|---|
| 0 | emerg | Tizimdan foydalanib bo'lmaydi |
| 1 | alert | Darhol chora ko'rish kerak |
| 2 | crit | Kritik holat |
| 3 | err | Oddiy xato |
| 4 | warning | Ogohlantirish holati |
| 5 | notice | Muhim holat, lekin xato emas |
| 6 | info | Umumiy axborot xabari |
| 7 | debug | Dasturchilar uchun batafsil ma’lumot |
-p err nomlangan darajani va undan jiddiyroq (raqami kichikroq) hamma narsani ko'rsatadi — ya’ni -p err aslida emerg, alert, crit va err ni birgalikda qamrab oladi.
Chiqish namunasini o'qish
Jul 24 11:05:02 ubuntu-server systemd[1]: Started backend-demo.service - Backend demo application.
Jul 24 11:05:02 ubuntu-server python3[6301]: Listening on 127.0.0.1:8080
Jul 24 11:06:15 ubuntu-server python3[6301]: 127.0.0.1 - - [24/Jul/2026 11:06:15] "GET / HTTP/1.1" 200 -
Jul 24 11:12:40 ubuntu-server systemd[1]: backend-demo.service: Main process exited, code=killed, status=9/KILL
Jul 24 11:12:45 ubuntu-server systemd[1]: Started backend-demo.service - Backend demo application.
- birinchi maydon — sana va vaqt;
- ikkinchisi — hostname;
- uchinchi va to'rtinchisi (
python3[6301]) yozuvni qaysi jarayon (nomi va PID i) yozganini ko'rsatadi; - qolgan qismi — xabarning o'zi.
To'rtinchi qator — code=killed, status=9/KILL — jarayon SIGKILL bilan tugatilganini, oxirgi qator esa Restart=on-failure siyosati tufayli xizmat avtomatik qayta ishga tushganini ko'rsatadi. -n 5 faqat oxirgi beshta yozuvni ko'rsatadi, --no-pager esa chiqishni pager’siz to'g'ridan-to'g'ri terminalga chiqaradi — skriptlar yoki tezkor tekshiruvlar uchun qulay.
Asoslardan tashqari filtrlar va formatlar
Real diagnostikada va intervyularda bir nechta parametr doim uchraydi:
| Chaqiruv | Nima qiladi |
|---|---|
journalctl -xeu <unit> |
Muvaffaqiyatsiz ishga tushishdan keyin eng ko'p yoziladigan shakl: -e eng yangi yozuvlarga o'tadi, -x tushuntiruvchi "catalog" matnini qo'shadi, -u unit bilan cheklaydi |
journalctl -k |
Faqat kernel xabarlari (dmesg bilan bir xil ma’lumot, lekin vaqt belgisi bilan va boot’lar osha saqlanadi) |
journalctl -g <regex> |
Faqat xabari andozaga mos keladigan yozuvlarni qoldiradi (--grep) |
journalctl -o verbose |
Yozuvdagi faqat xabarni emas, har bir tuzilgan maydonni ko'rsatadi — filtrlashga arziydigan maydonlarni topish usuli |
journalctl _COMM=sshd / _PID=1842 |
Yozuvni qaysi unit yozganidan qat’i nazar, to'g'ridan-to'g'ri tuzilgan maydon bo'yicha moslashtiradi |
Maydon moslamalari va filtrlar birlashtiriladi — journal’ni oddiy faylga grep qilishdan kuchliroq qiladigan narsa aynan shu. Masalan, joriy boot’dan beri bitta unit’dagi har bir xato:
Intervyuda
journalctl -xeu <unit> ni yoddan bilish intervyuda kichik, lekin real belgi: bu systemctl status ishdan chiqishni ko'rsatgandan keyingi refleks bo'lgan birinchi buyruq va -x catalog matni ko'pincha aniq sababni (yetishmayotgan binary fayl, ruxsat rad etilgani) oddiy tilda nomlaydi. "Kernel yoki OOM xabarlari uchun esa journalctl -k" deb qo'shib qo'yish tashqaridan o'ldirilgan xizmat izini qayerda qoldirishini bilishingizni ko'rsatadi.
Journal’ning doimiy saqlanishini boshqarish
Ubuntu Server’da sukut bo'yicha journal ko'pincha faqat /run/log/journal/ da — ya’ni xotirada, vaqtincha saqlanadi va qayta yuklashdan keyin yo'qoladi. Uni diskda doimiy saqlash uchun:
sudo mkdir -p /var/log/journal
sudo systemd-tmpfiles --create --prefix /var/log/journal
sudo systemctl restart systemd-journald
/var/log/journal/ ning shunchaki mavjudligining o'zi journal saqlashni avtomatik ravishda doimiyga o'tkazadi (sukut bo'yicha Storage=auto sozlamasi shunday ishlaydi). Buni /etc/systemd/journald.conf da aniq belgilash ham mumkin:
Info
Doimiy saqlash qayta yuklashdan omon qolishi kerak bo'lgan tarixiy tahlil va audit izlari uchun, ayniqsa production serverlarda muhim. Lekin bu disk joyidan foydalanishni anglatadi, shuning uchun uni keyingi bo'limda ko'riladigan hajm cheklovlari bilan birga qo'llash kerak.
Disk sarfini boshqarish
Hajmni cheklash:
--vacuum-size journal’ni berilgan hajmgacha qisqartiradi (avval eng eski yozuvlarni olib tashlaydi), --vacuum-time esa berilgan muddatdan eski hamma narsani olib tashlaydi. Doimiy cheklovni /etc/systemd/journald.conf dagi SystemMaxUse= bilan ham o'rnatish mumkin — bunda journal hech qachon shu hajmdan oshmaydi.
Keng tarqalgan xatolar
Muayyan narsani filtrsiz journalctl bilan qidirish
Filtrsiz journalctl minglab qator qaytarishi mumkin. Har safar -u, --since/--until yoki -p bilan qamrovni toraytirish tavsiya etiladi.
Journal doimiy saqlanadi deb o'ylab, qayta yuklashdan keyin log qidirish
Agar /var/log/journal/ hech qachon yaratilmagan bo'lsa, journal faqat joriy sessiyani qamrab oladi — qayta yuklash oldingi log'larni o'chirib yuboradi. Uzoq muddatli tahlil kerak bo'lsa, doimiy saqlashni oldindan yoqish kerak.
Disk joyi tugab borayotganiga e’tibor bermaslik
Doimiy saqlash yoqilgan, lekin hajm cheklovi o'rnatilmagan bo'lsa, ayniqsa "ko'p gapiradigan" (juda ko'p log yozadigan) xizmat bilan journal asta-sekin diskni to'ldirib qo'yishi mumkin. Vaqti-vaqti bilan --disk-usage bilan tekshirish va SystemMaxUse= bilan cheklov o'rnatish aynan shuning oldini oladi.
Mashqlar
- SSH xizmatining so'nggi yozuvlarini
journalctl -u ssh.service -n 20bilan o'qing va har bir qatorning tuzilishini (vaqt, host, jarayon, xabar) tushuntiring. journalctl --since "10 minutes ago"vajournalctl -p warning -bchiqishlarini solishtiring va ikkalasi o'rtasidagi farqni tushuntiring.- Sinov VM’ida journal’ni doimiy saqlashga o'tkazing (
/var/log/journal/ni yaratib), qayta yuklang (yoki simulyatsiya qiling) vajournalctl --list-bootsbir nechta boot’ni ro'yxatlashini tasdiqlang. journalctl --disk-usagechiqishini qayd qiling, so'ng--vacuum-time=1dni ishga tushiring va natija qanday o'zgarishini kuzating.
Mashqni bajardim deyish uchun: tasvirlangan hodisa (muayyan xizmat, muayyan vaqt oralig'i, muayyan jiddiylik darajasi) berilganda unga javob beradigan yagona journalctl buyrug'ini yoza olishingiz kerak.
Xulosa
journalctl — systemd-journald yig'gan barcha log'larni tuzilgan formatda, bitta joydan o'qish uchun ishlatiladigan vosita. -u unit bo'yicha, --since/--until vaqt bo'yicha, -b boot bo'yicha, -p esa jiddiylik darajasi bo'yicha filtrlaydi — bu to'rttasi birgalikda deyarli har qanday diagnostika so'rovini qamrab oladi. Journal sukut bo'yicha vaqtinchalik saqlanishi mumkin; doimiy saqlash /var/log/journal/ ni yaratish yoki Storage=persistent ni o'rnatish bilan yoqiladi, disk sarfi esa --vacuum-size/--vacuum-time yoki SystemMaxUse= bilan boshqariladi. Keyingi maqola — systemd troubleshooting bu vositani xizmat nosozliklarini aniqlashning tizimli jarayoniga birlashtiradi.