Çekirdek iletilerinin konsolumun taşmasını nasıl önleyebilirim?


45

Centos 6, rsyslog günlüğü kullanıyorum. Konsol, çekirdek mesajları ile doludur.

  • Klogd çalışmıyor (rsyslog kullanıyorum)
  • Rsyslog config konsola hiçbir şey yönlendirmez
  • Rysyslog'u tamamen durdurmayı bile denedim

Yine de bir şey konsolumu çekirdek günlük mesajlarıyla dolduruyor. Nedir ve nasıl durdurabilirim?

Güncelleme : Bu dışına gider kernel (donanım, iptables, vs.), malzeme ile üretilen mesajlardır /proc/kmsgbu gibi:

Shorewall: pub2loc: DROP: IN = br0 ÇIKIŞ = MAC = xxx SRC = xxx DST = xxx LEN = 60 TOS = 0x00 PREC = 0x00 TTL = 128 ID = 15731 DF PROTO = TCP SPT = 63767 DPT = 3493 PENCERE = 8192 RES = 0x00 SYN URGP = 0


Mesajlar neye benziyor? (Şahsen, genellikle bir xtermpencerede çalışıyorum, bu yüzden konsol su basmışsa beni rahatsız etmiyor.)
Keith Thompson

Açıkça söyleme riski altında olan mesajlar Shorewall'dan geliyor (hiç kullanmadım, bu yüzden çok yardımcı olamam). Bir shorewall veya güvenlik duvarı etiketi eklemek daha fazla dikkat çekebilir.
Keith Thompson

@KeithThompson: Mesajlar çekirdek kayıt mekanizmasından geliyor. Shorewall, bu mesajların yalnızca bir üreticisidir (iptables çekirdek modülleri aracılığıyla), en sinir bozucu olanıdır, ancak tüm çekirdek-üretimli mesajlar burada gösterilmektedir.
haimg

Yanıtlar:


27

Ben seninkini değiştirmeni öneririm /etc/sysctl.conf. Özellikle, çekirdek.printk satırını değiştirmek istiyorsunuz .

# Uncomment the following to stop low-level messages on console
kernel.printk = 3 4 1 3

Varsayılan centos ayarlarının ne olduğundan emin değilim, ancak ihtiyacınız olan şeyleri daha ayrıntılı bir şekilde ayarlamış gibi görünüyorum.

Ayrıca kütük açma ile ilgili shorewall bölümünü de görüyoruz . Günlük kaydı için LOG hedefini kullanmak zorunda değilsiniz, diğer araçları kullanabilir veya günlük önem derecesini ayarlayabilir ve mesajların nereye gittiğini kontrol etmek için işleri düzenleyebilirsiniz.


32

Çalışma zamanında değerleri ayarlamak için kullanın sysctl. (Sanırım bir kişi de /proc/sys/kernel/printkdoğrudan yazabilir ve görünüşe göre buradadmesg -n CUR açıklanan şekilde kullanabilirsiniz )

Görüntüle:

# sysctl kernel.printk
kernel.printk = 2       4       1       7

Çıktıdaki ayırıcılar tekli sekmelerdir, btw.

Ayarlamak. Burada ayırıcılar sadece boşluktur. De çalışır.

# sysctl -w kernel.printk="2 4 1 7"
kernel.printk = 2 4 1 7
# sysctl kernel.printk
kernel.printk = 2       4       1       7

Bakınız man sysctl- daha fazla bilgi için "çalışma zamanında çekirdek parametrelerini yapılandırma".

Hatırlatma seviyeleri için yukarıda Brian tarafından verilen kernel.printk dört değerleri:

  • CUR = geçerli şiddet seviyesi; yalnızca bu seviyeden daha önemli olan mesajlar yazdırılır
  • DEF = Seviyesiz mesajlara atanan varsayılan önem seviyesi
  • MIN = izin verilen minimum CUR
  • BTDEF = önyükleme zamanı varsayılan CUR

CentOS'umda: 7 4 1 7

                     CUR  DEF  MIN  BTDEF
0 - emergency        x              x                        
1 - alert            x         x    x
2 - critical         x              x
3 - error            x              x
4 - warning          x    x         x
5 - notice           x              x
6 - informational    V              V
7 - debug            

Bu çok gürültülü, sadece kritik ve yukarı istiyorum (hata yok). Etiketlenmemiş mesajlar uyarı olarak kabul edilmelidir, bu nedenle DEF iyidir:

                     CUR  DEF  MIN  BTDEF
0 - emergency        x              x                        
1 - alert            x         x    x
2 - critical         x              x
3 - error            V              V
4 - warning               x         
5 - notice                           
6 - informational                   
7 - debug            

Ayarla: 3 4 1 3


4
man klogctlAyrıca seviyeleri açıklar.
Ciro Santilli,

12

Bunu da faydalı buldum. RHEL tabanlı dağıtımlarda cat /proc/sys/kernel/printk, geçerli ayarlarınızın ne olduğunu görebilirsiniz.

Printk dosyasında dört değer bulunur. Bu değerlerin her biri hata mesajlarıyla baş etmek için farklı bir kural tanımlar. Konsol loglevel adı verilen ilk değer, konsola yazdırılan mesajların en düşük önceliğini tanımlar. (Öncelik ne kadar düşükse, loglevel sayısının o kadar yüksek olduğunu unutmayın.) İkinci değer, kendisine açık bir loglevel ekli olmayan mesajlar için varsayılan loglevel'i ayarlar. Üçüncü değer, konsol günlük seviyesi için mümkün olan en düşük günlük seviye yapılandırmasını belirler. Son değer, konsol günlük seviyesi için varsayılan değeri ayarlar.

Konsol loglevelini ayarlamak için / etc / sysconfig / init içindeki LOGLEVEL parametresinin kullanılması artık desteklenmemektedir. Konsol günlük seviyesini Red Hat Enterprise Linux 6'da ayarlamak için, bir açılış zamanı parametresi olarak loglevel = 'değerini iletin. Örneğin, loglevel = 6, 6'dan küçük tüm mesajları basacaktır (küçükten küçük olmamalıdır).

Kredi:


6

RedHat'a göre, bunu yapmanın "resmi" yolu :

Konsol günlük seviyesini Red Hat Enterprise Linux 6'da ayarlamak için, bir başlangıç ​​zamanı parametresi olarak loglevel = <sayı> değerini iletin.



0

Gördüğünüz, konsola yazdırılan çekirdek günlük mesajları. Konsolun kayıt mesajlarının konsola ulaşması, o anda ayarlanmış olan konsol kayıt kütük seviyesine bağlıdır.

Çekirdek cmdline, quietçekirdek parametresini içerdiğinde ortaya çıkan konsol log seviyesi 4(hatalar ve daha kötüsü) olur. Onsuz 7(yani bilgi ve daha kötüsü) olarak ayarlanır .

Aktif çekirdek parametrelerini ile cat /proc/cmdlineve geçerli konsol günlük seviyenizi ile görüntüleyebilirsiniz sysctl kernel.printk. İle dinamik olarak değiştirilebilir dmesg -n X(hatta ile sysctl -w).

Değişimi kalıcı kılmak için, çekirdek parametrelerini çekirdek cmdline (örneğin quietve / veya loglevel=X) ekleyebilir veya .confaltına bir sysctl dosyası ekleyebilirsiniz /etc/sysctl.d.

Çekirdek parametresi şöyle eklenebilir:

# vi /etc/default/grub # edit the GRUB_CMDLINE_LINUX value
# for i in /boot/grub2/grub.cfg /boot/efi/EFI/*/grub.cfg; do
     [ -f "$i" ] && grub2-mkconfig -o "$i" ; done

0

Bu bir yığın taşması ile ilgili site olduğu için çıktıyı kapatmamalısınız, hataları gidermelisiniz diyerek başlayacağım.

Bir konsoldaysanız ve mesajlar yüzünden ne yaptığınızı bile göremiyorsanız, bunu yazmayı deneyin.

sudo dmesg -D

Diğer çözümlere bakmak için yeterince sessiz olması gerekir.


-1

Gerçek bir sıkışma yaşarsanız, syslog hizmetini geçici olarak devre dışı bırakabilirsiniz; böyle bir taşkın olması durumunda herhangi bir şeyi düzgün şekilde görüntüleyemez veya yazamazsınız.


Soru, syslog arka planını durdurmanın zaten denendiğini ve bunun yeterli olmadığını söylüyor
Toby Speight
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.