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
답변
나는 당신을 변경하는 것이 좋습니다 /etc/sysctl.conf
. 특히, kernel.printk 줄 을 조정하고 싶습니다 .
# Uncomment the following to stop low-level messages on console
kernel.printk = 3 4 1 3
centos 기본 설정이 무엇인지 잘 모르겠지만 필요한 것보다 더 장황하게 설정 한 것 같습니다.
또한 로깅에 대한 쇼어 월 섹션을 참조하십시오 . 로깅을 위해 LOG 대상을 사용할 필요가 없으며 다른 도구를 사용하거나 로그 심각도를 조정하고 메시지 이동 위치를 제어하기 위해 항목을 조정할 수 있습니다.
답변
런타임시 값을 설정하려면을 사용하십시오 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
답변
이것도 도움이되었습니다. RHEL 기반 배포판에서 cat /proc/sys/kernel/printk
현재 설정이 무엇인지 확인할 수 있습니다 .
printk 파일에는 4 개의 값이 있습니다. 이러한 각 값은 오류 메시지를 처리하기위한 다른 규칙을 정의합니다. 콘솔 로그 수준이라고하는 첫 번째 값은 콘솔에 인쇄되는 메시지의 가장 낮은 우선 순위를 정의합니다. 두 번째 값은 명시적인 로그 수준이 첨부되지 않은 메시지의 기본 로그 수준을 설정합니다. 세 번째 값은 콘솔 로그 수준에 가능한 최저 수준의 로그 수준 구성을 설정합니다. 마지막 값은 콘솔 로그 레벨의 기본값을 설정합니다.
/ etc / sysconfig / init에서 LOGLEVEL 매개 변수를 사용하여 콘솔 로그 레벨을 설정하는 것은 더 이상 지원되지 않습니다. Red Hat Enterprise Linux 6에서 콘솔 로그 레벨을 설정하려면 부트 레벨 매개 변수로 loglevel = ‘을 전달하십시오. 예를 들어, loglevel = 6은 6보다 작은 모든 메시지를 인쇄합니다 (단, 같지 않음).
크레딧 :
답변
RedHat에 따르면 “공식적인”방법은 다음과 같습니다 .
Red Hat Enterprise Linux 6에서 콘솔 로그 레벨을 설정하려면, 부팅 시간 매개 변수로 loglevel = <number>를 전달하십시오.
답변
다음을 사용하여 콘솔에 대한 모든 커널 로깅을 일시적으로 억제 할 수도 있습니다.
sudo dmesg -n 1
답변
콘솔 로그 메시지가 콘솔에 인쇄됩니다. 콘솔에 도달하는 로그 메시지는 현재 설정된 콘솔 로그 수준에 따라 다릅니다.
커널 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
답변
이것은 스택 오버플로 관련 사이트이므로 출력을 끄지 말아야한다고 말하면서 오류를 해결해야합니다.
콘솔에 있고 메시지로 인해 수행중인 작업을 볼 수없는 경우 이것을 입력하십시오.
sudo dmesg -D
다른 솔루션을 볼 수있을 정도로 조용해야합니다.