커널 메시지가 콘솔에 넘치지 않게하는 방법은 무엇입니까?


45

Centos 6, rsyslog 로깅을 사용하고 있습니다. 콘솔에 커널 메시지가 넘칩니다.

  • Klogd가 실행 중이 아닙니다 (rsyslog를 사용하고 있습니다)
  • Rsyslog 설정은 콘솔로 아무것도 지시하지 않습니다
  • 심지어 rsyslog를 완전히 중지하려고 시도했습니다.

여전히 뭔가 커널 로그 메시지를 내 콘솔 홍수입니다. 그것이 무엇이며 어떻게 중지합니까?

업데이트 : 커널에서 생성 한 메시지 (하드웨어, iptables 등)는 /proc/kmsg다음과 같이 종료됩니다.

Shorewall : pub2loc : DROP : IN = br0 OUT = MAC = xxx SRC = xxx DST = xxx LEN = 60 TOS = 0x00 PREC = 0x00 TTL = 128 ID = 15731 DF PROTO = TCP SPT = 63767 DPT = 3493 WINDOW = 8192 RES = 0x00 동기화 URGP = 0


메시지는 어떻게 생겼습니까? (개인적으로, 나는 일반적으로 xterm창문에서 일하기 때문에 콘솔이 침수되면 나를 귀찮게하지 않습니다.)
Keith Thompson

명백한 내용을 표시 할 위험이있는 메시지는 Shorewall (내가 사용한 적이 없으므로 많은 도움이되지 않음) 에서 오는 메시지 입니다. 쇼어 월 또는 방화벽 태그를 추가 하면보다 유용한주의가 필요할 수 있습니다.
Keith Thompson

@KeithThompson : 메시지가 커널 로깅 메커니즘을 통해오고 있습니다. Shorewall은 가장 성가신 iptables 커널 모듈을 통해 이러한 메시지를 생성하는 사람 중 하나 일 뿐이지 만 모든 커널 생성 메시지가 여기에 표시됩니다.
haimg

답변:


27

나는 당신을 변경하는 것이 좋습니다 /etc/sysctl.conf. 특히, kernel.printk 줄 을 조정하고 싶습니다 .

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

centos 기본 설정이 무엇인지 잘 모르겠지만 필요한 것보다 더 장황하게 설정 한 것 같습니다.

또한 로깅에 대한 쇼어 월 섹션을 참조하십시오 . 로깅을 위해 LOG 대상을 사용할 필요가 없으며 다른 도구를 사용하거나 로그 심각도를 조정하고 메시지 이동 위치를 제어하기 위해 항목을 조정할 수 있습니다.


32

런타임시 값을 설정하려면을 사용하십시오 sysctl. (나는 /proc/sys/kernel/printk직접 쓸 수도 있고 여기에dmesg -n CUR 설명 된대로 사용할 수도 있다고 가정 합니다 )

디스플레이:

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

출력의 구분 기호는 단일 탭 (btw)입니다.

세트. 여기서 구분 기호는 공백입니다. 잘 작동합니다.

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

자세한 내용은 man sysctl"런타임에 커널 매개 변수 구성"을 참조하십시오.

위의 Brian이 제공 한 심각도 수준 과 kernel.printk의 네 가지 값에 대한 알림 :

  • CUR = 현재 심각도 수준; 이 수준보다 중요한 메시지 만 인쇄됩니다
  • DEF = 수준이없는 메시지에 지정된 기본 심각도 수준
  • MIN = 최소 허용 CUR
  • BTDEF = 부팅시 기본 CUR

내 CentOS에서 : 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            

이것은 너무 시끄 럽습니다, 나는 단지 치명적이며 위로하기를 원합니다 (오류 없음). 레이블이없는 메시지는 경고로 간주되므로 DEF가 좋습니다.

                     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            

로 설정 : 3 4 1 3


4
man klogctl또한 레벨을 설명합니다.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

12

이것도 도움이되었습니다. RHEL 기반 배포판에서 cat /proc/sys/kernel/printk현재 설정이 무엇인지 확인할 수 있습니다 .

printk 파일에는 4 개의 값이 있습니다. 이러한 각 값은 오류 메시지를 처리하기위한 다른 규칙을 정의합니다. 콘솔 로그 수준이라고하는 첫 번째 값은 콘솔에 인쇄되는 메시지의 가장 낮은 우선 순위를 정의합니다. 두 번째 값은 명시적인 로그 수준이 첨부되지 않은 메시지의 기본 로그 수준을 설정합니다. 세 번째 값은 콘솔 로그 수준에 가능한 최저 수준의 로그 수준 구성을 설정합니다. 마지막 값은 콘솔 로그 레벨의 기본값을 설정합니다.

/ etc / sysconfig / init에서 LOGLEVEL 매개 변수를 사용하여 콘솔 로그 레벨을 설정하는 것은 더 이상 지원되지 않습니다. Red Hat Enterprise Linux 6에서 콘솔 로그 레벨을 설정하려면 부트 레벨 매개 변수로 loglevel = '을 전달하십시오. 예를 들어, loglevel = 6은 6보다 작은 모든 메시지를 인쇄합니다 (단, 같지 않음).

크레딧 :


6

RedHat에 따르면 "공식적인"방법은 다음과 같습니다 .

Red Hat Enterprise Linux 6에서 콘솔 로그 레벨을 설정하려면, 부팅 시간 매개 변수로 loglevel = <number>를 전달하십시오.


6

다음을 사용하여 콘솔에 대한 모든 커널 로깅을 일시적으로 억제 할 수도 있습니다.

sudo dmesg -n 1

다음을 참조하십시오 : https://askubuntu.com/questions/97256/how-do-i-disable-messages-or-logging-from-printing-on-the-console-virtual-termin


1
이것이 바로 내가 원하는 것입니다! 메시지를 생성하는 문제를 디버깅하는 동안 한 터미널에서 메시지를 일시적으로 비활성화하고 싶었습니다.
ntc2

0

콘솔 로그 메시지가 콘솔에 인쇄됩니다. 콘솔에 도달하는 로그 메시지는 현재 설정된 콘솔 로그 수준에 따라 다릅니다.

커널 cmdline에 quiet커널 매개 변수가 포함 된 경우 결과 콘솔 로그 레벨은 4오류입니다. 그것 없이는 7(즉, 정보와 더 나쁜)로 설정됩니다 .

을 사용하여 활성 커널 매개 변수와을 사용 cat /proc/cmdline하여 현재 콘솔 로그 레벨을 볼 수 있습니다 sysctl kernel.printk. 로 dmesg -n X(또는로 sysctl -w) 동적으로 변경할 수 있습니다 .

변경 사항을 영구적으로 유지하려면 커널 매개 변수를 커널 cmdline에 추가 quiet하거나 (예 : 및 / 또는 loglevel=X) sysctl .conf파일을 추가 하십시오 /etc/sysctl.d.

커널 매개 변수는 다음과 같이 추가 될 수 있습니다 :

# 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

이것은 스택 오버플로 관련 사이트이므로 출력을 끄지 말아야한다고 말하면서 오류를 해결해야합니다.

콘솔에 있고 메시지로 인해 수행중인 작업을 볼 수없는 경우 이것을 입력하십시오.

sudo dmesg -D

다른 솔루션을 볼 수있을 정도로 조용해야합니다.


-1

실제로 용지 걸림이 발생하면 플러드가 발생하여 제대로 보거나 입력 할 수없는 경우 syslog 서비스를 일시적으로 비활성화 할 수 있습니다.


질문에 따르면 syslog 데몬 중지가 이미 시도되었지만 충분하지 않습니다
Toby Speight
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.