Systemd , Linux dağıtımlarının çoğunda öntanımlı olarak bulunmaktadır. Systemd’nin temel özelliklerinden biri, günlükleri toplama yöntemi ve bu günlükleri analiz etmek için sağladığı araçlardır.
Geleneksel olarak sysvinit sistemi sgünlükleri düz metin dosyaları halinde saklamaktadır. Bu dosyaları okumak ve analiz etmek için find, grep, cut ve diğer birçok komutun kullanılması gerekir.
Systemd, günlükleri daha fazla kaynaktan toplar, journalgünlüklerini ikili biçimde tutar ve günlükleri okumak, analiz etmek ve işlemek için size bir komut satırı aracı sunar.
Journald nedir? Journalctl nedir?
journald, günlükleri syslog gibi çeşitli günlük kaynaklarından toplayan systemd’deki daemon’dur.
journalctl, günlük günlükleriyle etkileşim kurmanıza izin veren komut satırı aracıdır.
Journalctl ile günlükleri okuyabilir, günlükleri gerçek zamanlı olarak izleyebilir, günlükleri zamana, hizmete, önem derecesine ve diğer parametrelere göre filtreleyebilirsiniz.
Sisteminizde günlük günlüklerinin etkin olup olmadığını kontrol edin
Bazı Linux dağıtımları, journal günlüklerini varsayılan olarak etkinleştirmez.
Journald günlüklerinin varsayılan konumu /var/log/journal
dizinidir. Bu dizinin mevcut olduğundan emin olmalısınız. Değilse, kendiniz oluşturabilirsiniz.
huseying@pardus:~# cat /etc/systemd/journald.conf
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See journald.conf(5) for details.
Sonra, /etc/systemd/journald.conf dosyasında storage değerinin auto
veya persistent
olarak ayarlandığından emin olun.
Journald.conf dosyası varsayılan değerleri gösterir. Dolayısıyla, girişlerin önünde bir # bulunsa bile, bunların kullanılan varsayılan ayarlar olduğu anlamına gelir. Herhangi bir şeyi değiştirmek isterseniz, o satırdan # işaretini kaldırmalısınız.
Journalctl ile günlükleri okuyun ve arayın
Terminalde sadece journalctl komutu verirseniz , journal günlük kronolojik sırada gösterilecektir.
#
journalctl
Eyl 12 04:29:24 pardus kernel: BIOS-e820: [mem 0x0000000000000000-0x000000000009cfff] usable Eyl 12 04:29:24 pardus kernel: BIOS-e820: [mem 0x000000000009d000-0x000000000009ffff] reserved Eyl 12 04:29:24 pardus kernel: BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved Eyl 12 04:29:24 pardus kernel: BIOS-e820: [mem 0x0000000000100000-0x00000000b902ffff] usable Eyl 12 04:29:24 pardus kernel: BIOS-e820: [mem 0x00000000b9030000-0x00000000cbefbfff] reserved Eyl 12 04:29:24 pardus kernel: BIOS-e820: [mem 0x00000000cbefc000-0x00000000cbefcfff] ACPI NVS Eyl 12 04:29:24 pardus kernel: BIOS-e820: [mem 0x00000000cbefd000-0x00000000d7f7efff] reserved Eyl 12 04:29:24 pardus kernel: BIOS-e820: [mem 0x00000000d7f7f000-0x00000000d7fcefff] ACPI NVS Eyl 12 04:29:24 pardus kernel: BIOS-e820: [mem 0x00000000d7fcf000-0x00000000d7ffefff] ACPI data Eyl 12 04:29:24 pardus kernel: BIOS-e820: [mem 0x00000000d7fff000-0x00000000d80fffff] reserved
Karşınıza gelen ekranda aşağıdaki tuşlar yardımı ile hareket edebilirsiniz:
Anahtar | Açıklama |
---|---|
Ok Tuşu | Bir satır git |
Aralık Tuşu | Bir sayfa aşağı git |
b | Bir sayfa yukarı git |
g | İlk satıra git |
G | Son satıra git |
100g | 100. satıra git |
/ string | Mevcut konumdaki dizeyi ara |
n / N | Sonraki veya önceki arama eşleşmesine git |
q | Günlüklerden çıkın |
Günlükleri ters kronolojik sırayla göster
Fark ettiğiniz gibi, günlükler kronolojik sırayla gösterilir. Bu, depolanan en eski günlüklerin ilk önce görüntülendiği anlamına gelir.
Önce en son günlükleri görmek istiyorsanız, günlük günlüklerini şu seçenekle ters sırada görüntüleyebilirsiniz -r
:
journalctl -r
Günlüğün yalnızca son N satırını görüntüle
Tüm günlükleri göstermek yerine, -n
seçeneği kullanarak günlükten yalnızca belirli sayıda satırı görüntülemeyi seçebilirsiniz .
Örneğin, aşağıdaki komut, günlüklerin en son 25 satırını görüntüleyecektir:
journalctl -n 25
Günlük günlüklerini gerçek zamanlı olarak göster
Günlükleri gerçek zamanlı olarak görmek istiyorsanız -f
parameresini kullanabilirsiniz :
journalctl -f
Tail komutunun -f seçeneği gibi , bu parametre günlükleri takip modunda gerçek zamanlı olarak görüntüleyecektir.
Gerçek zamanlı görünümden çıkmak için Ctrl + C komutunu kullanın.
Günlükleri UTC saatinde göster
Varsayılan olarak günlük günlükleri, sisteminizin yerel saatinde gösterilir. Sisteminizin saati UTC dışında bir saate ayarlanmışsa ve günlükleri UTC olarak görmek istiyorsanız, bunu --utc
bayrağı kullanarak yapabilirsiniz .
journalctl --utc
Sadece çekirdek mesajlarını göster
Systemd , farklı kaynaklardan günlükler toplar. Yalnızca Linux çekirdek günlüklerini görmek istiyorsanız, -k
parametresini kullanabilirsiniz .
journalctl -k
Eyl 12 04:29:24 pardus kernel: x86/PAT: Configuration [0-7]: WB WC UC- UC WB WC UC- WT Eyl 12 04:29:24 pardus kernel: e820: last_pfn = 0xb9030 max_arch_pfn = 0x400000000 Eyl 12 04:29:24 pardus kernel: Base memory trampoline at [ffff9426c0097000] 97000 size 24576 Eyl 12 04:29:24 pardus kernel: Using GB pages for direct mapping Eyl 12 04:29:24 pardus kernel: RAMDISK: [mem 0x35cb9000-0x36e53fff] Eyl 12 04:29:24 pardus kernel: ACPI: Early table checksum verification disabled Eyl 12 04:29:24 pardus kernel: ACPI: RSDP 0x00000000000F0120 000024 (v02 LENOVO) Eyl 12 04:29:24 pardus kernel: ACPI: XSDT 0x00000000D7FCF188 0000D4 (v01 LENOVO TP-N1G 00000000 PTEC 00000002) Eyl 12 04:29:24 pardus kernel: ACPI: FACP 0x00000000D7FF4000 0000F4 (v05 LENOVO TP-N1G 00001750 PTEC 00000002)
İpucu: Tüm günlük günlüklerini görmek için sudo kullanın
Systemd, hangi kullanıcıya hangi tür günlüklerin gösterileceği konusunda korumacıdır.
Normal bir kullanıcıysanız bazı günlükleri gösterebilir, ancak tüm günlükleri göstermeyebilir:
huseying
@pardus:~$ journalctl -u ssh
Hint: You are currently not seeing messages from other users and the system.
Users in the 'systemd-journal' group can see all messages. Pass -q to
turn off this notice.
No journal files were opened due to insufficient permissions.
huseying
@pardus:~$
Tüm günlüklere erişmek istiyorsanız, sudo kullanıcısıysanız sudo kullanmalısınız :
sudo journalctl -u ssh
Belirli bir önyükleme oturumundan mesajları göster
Bu journald’ın mükemmel bir özelliğidir. Journalctl komutu, seçeneği kullanarak belirli bir önyükleme oturumuna ait günlüklere erişmenizi sağlar.
Tüm önyükleme oturumlarını –list-boots
parametresi ile listeleyebilirsiniz .
journalctl --list-boots
Çıktı, önyükleme oturumlarını önyükleme zamanı ve önyükleme oturumlarına atanmış bir tamsayı ile gösterecektir:
-5 513008ead8464c23aab732a2feed5277 Sun 2020-07-12 20:43:38 IST—Sun 2020-07-12 22:40:02 IST
-4 caff16e3f46a4479b5287fb9e294f610 Mon 2020-07-13 07:36:04 IST—Mon 2020-07-13 19:13:44 IST
-3 5665f41cc50a4dec9955efacc2596d68 Mon 2020-07-13 20:30:55 IST—Mon 2020-07-13 22:20:34 IST
-2 c7d17407b0bd476a930af503f64b6006 Tue 2020-07-14 07:58:41 IST—Tue 2020-07-14 18:50:04 IST
-1 7ab5e04518ec455abe0e2c86fdaa46fa Tue 2020-07-14 21:19:27 IST—Tue 2020-07-14 22:42:11 IST
0 91856e86d4ee4e828717913deb288568 Wed 2020-07-15 08:11:51 IST—Wed 2020-07-15 17:14:10 IST
Önyükleme oturumu 0, geçerli önyükleme oturumlarıdır. Önyükleme oturumu -1, son başlatılan oturumdur ve bu böyle devam eder.
journalctl -b -2
Bunu eski sistem günlüğü sisteminde yapmaya çalıştığınızı hayal edin!
Belirli bir systemd hizmeti için journal günlüklerini filtreleme
Filtreleme, journal günlüklerinin güçlü bir noktasıdır. Günlükleri systemd hizmetlerine göre filtreleyebilirsiniz.
journalctl -u service_name
Örneğin, SSH tarafından oluşturulan günlükleri görmek istiyorsanız, bunu şu şekilde kullanabilirsiniz:
journalctl -u ssh
Elbette listelemek istediğiniz systemd hizmet adını bilmeniz gerekir.
Belirli bir zaman aralığı için günlükleri filtreleme
Bu, journal günlüklerinin filtreleme özelliğinin başka bir örneğidir. Günlükleri belirli bir süre için filtreleyebilirsiniz, bunu yapmanın çeşitli yolları vardır.
Günlükleri filtrelemek için konuşma dili kullanabilirsiniz. Dün, bugün ve yarın gibi terimler kabul edilmektedir.
journalctl --since=yesterday --until=now
Ayrıca tarih veya tarih saat kombinasyonunu da belirtebilirsiniz:
journalctl --since "2020-07-10"
Tarih ve saatle birlikte bir dönem de belirtebilirsiniz:
journalctl --since "2020-07-10 15:10:00" --until "2020-07-12"
Saat 00:00:00 başlar ve gün ve tarihi belirler.
Geçmişte 1 saat 20 dakika belirtmek için -1s20min gibi göreli zamanı da kullanabilirsiniz.
Günlükleri UID, GID ve PID’ye göre filtreleyin
Bir sorunu gidermek için hata ayıklama yapıyorsanız, PID’sini kullanarak belirli bir işlem için günlükleri kontrol etmek isteyebilirsiniz.
Journal günlükleri ayrıca Kullanıcı Kimliği (UID), Grup Kimliği (GID) ve İşlem Kimliği (PID) üzerinden filtrelenebilir. Aşağıda bir örnek verilmiştir:
journalctl _PID=1234
İpucu: Daha özel günlük görüntüleme için birden fazla seçeneği birleştirin
İstenilen günlükleri görüntülemek için birkaç seçeneği birleştirebilirsiniz.
Örneğin, UTC zaman damgalarında yalnızca dünün SSH günlüklerini görmek istiyorsanız, şunu kullanabilirsiniz:
sudo journalctl -u ssh --since=yesterday --utc
Diğer bir yaygın kullanım, günlükleri önyükleme oturumlarına göre filtrelemektir. Mevcut oturumda yalnızca SSH günlüklerini görmek istiyorsanız, şunları kullanabilirsiniz:
sudo journalctl -u ssh -b0
Seçenekleri ihtiyacınıza göre birleştirebilirsiniz.
Journalctl -xe’yi son birkaç günlüğü görüntülemek için kullanma
Genellikle journalctl -xe
komutunu kullanmayı öneren insanlarla karşılaşırsınız.
-e
: Günlük günlüklerinin sonuna atla-x
: Günlük girişlerinde ek bilgi göster (varsa)
Bazı günlük girişlerinde, normal günlük görünümünde görüntülenmeyen ek bilgiler bulunur.
Eğer -x
seçeneğini kullanırsanız bu tür bilgileri görüntüleyebilirsiniz.
Bunun gibi tek bir satır olarak gördüğünüz şey:
Jul 09 16:33:40 itsfoss systemd[1]: Started Run anacron jobs.
Aslında burada göründüğü gibi daha fazla bilgi içerebilir:
Jul 09 16:33:40 itsfoss systemd[1]: Started Run anacron jobs.
-- Subject: A start job for unit anacron.service has finished successfully
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- A start job for unit anacron.service has finished successfully.
--
-- The job identifier is 3702.
Ek bilgiler, bir hata veya günlük olayının bağlamını ve olası çözümleri açıklamaya yardımcı olur.
Journalctl ile günlüklerde yalnızca hataları göster
Mevcut oturumdaki tüm hataları göstermek için şunları kullanabilirsiniz:
journalctl -p 3 -xb
- -p 3: öncelik 3 için günlükleri filtrele
- -x: günlük hakkında ek bilgi sağlar (varsa)
- b: son önyüklemeden beri (mevcut oturum olan)
Hata ayıklama veya uyarı veya hatta kritik düzey günlükleri almak için diğer öncelik düzeylerini de kullanabilirsiniz. Bu tabloda tüm öncelik seviyelerinini bulabilirsiniz.
Öncelik | Kod |
---|---|
0 | emerg |
1 | alert |
2 | crit |
3 | err |
4 | warning |
5 | notice |
6 | info |
7 | debug |
Ayrıca, çeşitli önem dereceleri için günlükleri görüntüleyebilirsiniz. Örneğin, mevcut oturumdaki tüm uyarı, bildirim ve bilgi günlüklerini görmek istiyorsanız, şunları kullanabilirsiniz:
journalctl -p 4..6 -b0
Günlüklerin ne kadar disk alanı aldığını kontrol edin
Journald, çeşitli kaynaklardan günlükleri toplar ve hata ayıklama günlükleri dahil olmak üzere çeşitli düzeylerdeki günlükleri saklar. Doğal olarak, günlükleri tutmak analiz ve denetimde yardımcı olurken, önemli miktarda disk alanı kaplayabilirler.
Bu journalctl komutuyla günlük günlüklerinin ne kadar disk alanı kapladığını kontrol edebilirsiniz:
journalctl --disk-usage
Çıktıyı gördüğünüzde bir sürpriz (veya bir şok) yaşayabilirsiniz:
huseying@pardus:~# journalctl --disk-usage
Archived and active journals take up 2.8G in the file system.
Yazının orijinalini buradan okuyabilirsiniz.
![](/wp-content/uploads/2022/03/Huseyin-guc.jpeg)
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.