Journalctl nasıl temizlenir


209

Google'da sistem günlüğünü temizlemenin güvenli bir yolunu bulamadım. Bunu yapmanın güvenli ve güvenilir bir yolunu bilen var mı?

Diyelim ki bir şey deniyordum ve günlüklerim çeşitli hata mesajlarıyla doluydu. Ayrıca günlüğümü masaüstümde Conky kullanarak görüntülüyorum. Bu hataları bana berbat bir gün hatırlattıkları gibi görmek istemiyorum. Bu şeyi düzeltiyordum, bu korkudan sonra taze bir adam gibi hissetmek istiyorum. Sanırım herkes bunun günlükleri silmek için geçerli bir neden olduğu konusunda hemfikir olacak: P.

Yanıtlar:


290

Kendi kendine bakım yöntemi kütükleri büyüklük veya zamana göre vakumlamaktır.

Sadece son iki günü koru:

journalctl --vacuum-time=2d

Yalnızca son 500 MB’yı koru:

journalctl --vacuum-size=500M

man journalctl daha fazla bilgi için.


11
Güzel komut, ancak benim için openSUSE 13.2'de (şu anki kararlı sürüm) işe yaramadı. Arch'ın çekirdek ve kullanıcı programları için genellikle son teknolojide olduğu biliniyor, bu yüzden son zamanlarda sisteme vakum seçeneklerinin eklendiğini ve dağıtımımın içine çökmediğini iddia ettim. Buradaki gerçeği, Lennart’ın 10 Aralık 2014 tarihinde yapılan açıklamasında techupdates.com/go/1002774 , bu komutun v218 sistemine eklendiğini doğruladı. Sadece bu yorumu ekleyerek Arch'ta olmayan, benim gibi bir başkasını benzer bir mesele var. Yine de oy verildi.
Joshua Huber

Yeni log mesajlarının 'journalctl -f' ile gösterilmediği bir durumu düzeltmek için 'journalctl --vacuum-time = 1d' kullandım. Görünüşe göre, sistem zamanım geçici olarak bir gün kadar bir gün ileriye doğru sıçradı, sonra düzeldi ve journalctl, günlük olay zaman damgalarını gelecekteki zamandan itibaren günlük kuyruğu olarak kullanıyordu.
user5071535 16:15

8
Ubuntu 16.04'te "systemd 229" sürümünde çalışmadı. journalctl --vacuum-size=1Kdaha sonra journalctlhala 1K'dan fazla bir yol gösterir. Son önyüklemeden bu yana tüm mesajları gösterir.
Dan Dascalescu,

18
Görünüşe göre bu aktif arşivleri değil sadece arşivlenmiş kütükleri temizliyor. Daha journalctl --flush --rotateönce koşmayı denedim journalctl --vacuum-time=1sve hala her şey olmasa da, daha fazla şeyi kaldırdım.
user60039

2
Belgeler bana çok net görünmüyor. Her zaman 2d olarak ayarlanmış mı (örneğinizde)? Veya komutu çalıştırdığınız andan itibaren 2d mi? Belki de bunun tam olarak nasıl çalıştığını anlamıyorum.
jersey fasulyesi

84

Genelde günlüğü kendiniz temizlemezsiniz. Bu, systemd tarafından yönetilir ve yeni veriler geldikçe eski günlükler döndürülür. Yapılacak doğru şey, dergald'ı yalnızca ilgilendiğiniz kadar veriyi tutacak şekilde programlamak olacaktır. Ayarlamak için en genel şey toplam disktir. almak için izin verilen yer. Bu sınırı geçtikten sonra, bu değerin yakınında kalmak için eski girişleri toplamaya başlar.

Bunu şöyle ayarlayabilirsiniz /etc/systemd/journald.conf:

SystemMaxUse=100M

11
Tamam, ama sıradışı durumlar da var. Birçoğunun sadece estetik bir sebep olduğunu biliyorum, ancak estetik insan için geçerli bir neden;).
asukasz Zaroda

2
@ AsukaszZaroda Bu durumda "güvenli" tanımlamanız gerekecektir. Normalde "Bir servetin tutmak üzere yapılandırıldığı bir şeyi uçurmak istiyorum" "güvenli" ile uyumsuzdur. Zorlamak istiyorsanız, sadece hizmeti kapatın ve günlük dosyalarını sıfırlayın. Normal çalışmasını istiyorsanız, sorunuzdaki parametreleri daha iyi tanımlamanız gerekir. "Güvenli" derken ne demek istiyorsun?
Caleb

Güvence, temizledikten sonra her zamanki gibi çalışacağını, sadece yeni yerden başlayacağını kastediyorum.
asukasz Zaroda

5
Tipik bir durum olmayabilir, ancak bazen bazı sistem hataları nedeniyle eski günlükleri silmek gerekebilir, örneğin bbs.archlinux.org/viewtopic.php?pid=1173031#p1173031
diffycat

1
Günlükleri belirli bir boyuta ulaştığında değil bir süre sonra temizlemek için, MaxRetentionSecyerine parametreyi ayarlayabilirsiniz SystemMaxUse. Daha man journald.conffazla ayrıntı için bakınız.
joelostblom

52

Michael'ın cevabında bir şey eksik: vakumlama aktif arşivleri değil sadece arşivlenmiş günlük dosyalarını siler. Her şeyden kurtulmak için önce dosyaları döndürmeniz gerekir; böylece son girişler etkin olmayan dosyalara taşınır.

Yani, tüm girişleri kaldırmak için tam cevap gibi görünüyor

journalctl --rotate
journalctl --vacuum-time=1s

(Bunu bir journalctlkomutta birleştiremeyeceğinizi unutmayın .)

Bu arada, bazı dağıtımlar günlükleri diske yazacak şekilde yapılandırmışlardır, bazıları /var/log/journalise günlükleri bellekte ( /run/log/journal) tutar. Bazı durumlarda journalctl --flushher şeyin kaldırılması için önce kullanılması gerekebileceğini umuyorum.

Eğer yoksa --rotatesürümünüzdeki kullanabileceğiniz --sincegirişlerini filtrelemek için argüman:

--since "2019-01-30 14:00:00"
--since today

journalctl: tanınmayan seçenek '--rotate'
stiv

1
diğer cevapların neye yaklaştığını öğrenirken (uzun vadeli strateji) - soru basit: günlükleri şimdi nasıl temizlersiniz (belki de şu anki göreviniz için uzun vadeyle ilgilenmiyorsunuzdur). Bu soruya başka varsayımlarda bulunmadan cevap verir ve journalctl'yi anlamak için başka büyük değer de sağlar. Cevap bu olmalı.
Marc

1
Bu benim için tek yararlı cevaptı. Teşekkürler!
Freedo

18

Arch linux’ta en yakınım:

  • SystemMaxUse = 1M ayarlamak için /etc/systemd/journald.conf dosyasını düzenleyin.
  • Dergisi yeniden başlatılıyor: sudo systemctl restart systemd-journald
  • SystemMaxUse sıfırlanıyor = 200M
  • Dergiyi yeniden başlatma

Sistemimde, her günlük dosyası 8 MB'dir ve yukarıdakiler 3 hariç tümünü temizleyerek toplam boyutu ~ 25 MB'a çıkarır.

Benim kullanım-case (sadece dergi dizin ve alt dizinleri) btrfs için inek devre dışı edildi: sudo chattr +C /var/log/journal/*. Sorun şu ki, öznitelik yalnızca yeni oluşturulan dosyalar üzerine kuruludur, bu nedenle günlüğü temizleme isteği.


4
Kullanım çantanız aslında gerekli değildi. Dergide CoW'u devre dışı bırakmanın amacı, sık sık yazılmakta olduğu. Eski döndürülmüş günlük dosyaları için durum böyle değil, sadece orada oturuyorlar.
Hjulle

1
Ayarladım SystemMaxUse=1K, yeniden başlattım systemd-journald, ancak journalctl hala gitmek istediğim girişleri gösteriyor. Düz metin dosyalarındaki bu ilerleme nasıl?
Dan Dascalescu 10:16

13

Beri --vacuum-timeve --vacuum-sizebenim için bir şey yapmadı beri aşağıdakileri yaptım:

$ sudo find /var/log/journal -name "*.journal" | xargs sudo rm 
$ sudo systemctl restart systemd-journald

Doğru değil, işe yaradı.


Debian Jessie’de yol bu /run/log.
Synchro

1
sadece bu bana yardımcı oldu!
T.Todua

Bu şu anda doğru cevaptır. Journalctl komutu bunu yapabilirse iyi olurdu, ancak görünmüyor.
Kevin Lyda

11

Tüm günlüğü temizlemek için çok kaba bir kuvvet yöntemi:

$ sudo journalctl --vacuum-time=1seconds

--vacuum-sizeMichael mentoined olarak da kullanabilirsiniz .


5
İşe yaramadı. 15 dakika önce girişler, hala çalıştıktan sonra bile ortaya çıkıyor systemctl restart systemd-journald.
Dan Dascalescu,

1
Burada aynı. Bu benim için de işe yaramadı. CentOS7'yi çalıştırıyorum.
jersey fasulye

5

Hem --rotate hem de --vacuum-time = 1s, CentOS'ta benim için işe yaramadı. Böyle temizleyebildim:

sudo rm -rf /run/log/journal/*

İçinde onaltılık ada sahip 2 dizin buldum ./journal. journalctlKomutlar yalnızca en son birinde çalışır. Eski dizini manuel olarak silmek zorunda kaldım ve bu güvenli. Sadece günlüğü conf de boyutunu sınırladıktan sonra.
KeitelDOG

1
  1. Gelecekte ihtiyaç duyarsanız, yedekleyin:
    cp /run/log/journal/<temp-string>/system.journal /mylog/dir/back/system.journal.bak

  2. Dosyayı temizle:
    cd /run/log/journal/<temp-string>/ >system.journal

  3. En son günlükleri görmek için kontrol edin:
    journalctl -xe


1

journalctl -bsadece en son açılıştan gösterilecek. Ayrıca kullanabilirsiniz -b -1, -b -2Kişisel korkunç gün hala orada vb ama sen gerekmedikçe, görmek zorunda olmayacaktır.


0

Önceki cevabım "çoğaltılmış" olduğu için silindi. Önceki cevabımda yeterince net olmadığım için üzgünüm, fakat mevcut cevaplardan farklıydı. Yani burada daha ayrıntılı bir sürüm:

journalctl -m --vacuum-time=1shile benim için yaptı. Lütfen -mbayrağa dikkat edin , tüm dergilerinizi birleştirir ve temizler. -mBayrak olmadan benim davamda hiçbir şey temizlemiyordu (CentOS-7'de).

Umarım yardımcı olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.