syslog의 크기를 어떻게 제한합니까?


13

우분투 12.04 LTS를 실행하는 엄마의 컴퓨터가 있습니다. 잘 작동했지만 갑자기 syslog가 모두 채워졌습니다. 그리고 채우기 /var/log/syslog로 400GB 크기 의 파일 을 삭제했습니다 . 예-기가 바이트

유용한 정보가 있다고 확신하지만 400GB가 어떤 종류의 정보인지 알아볼 수는 없습니다. 정말 놀라운 점은 8 시간 안에 일어났다는 df것입니다. 정오 쯤 뛰었고 그 사이에 그녀의 드라이브가 30 % (70 %에서 100 %로) 채워졌습니다.

이 문제의 원인은 무엇이고 어떻게 해결할 수 있습니까?`

편집 USB가 범죄자 인 것처럼 보입니다.

Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157829] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157836] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157842] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157849] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157857] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157863] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157870] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157877] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157884] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157891] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use

2
크기를 제한하는 대신 크기를 채우는 것을 알아 내려고 노력해야한다고 말하고 싶습니다. 반복되는 메시지가 많이 있어야합니다 tail -n20 /var/log/syslog. 마지막 20 줄을 보도록 실행 해보십시오 .
mikewhatever

나는 파일을 찾기 전에 그것을 시도했다 – 아무것도 반복되는 것 같지 않지만 다시 한번 살펴볼 것이다
Wayne Werner

그래서 이것은 문제가 "demond_nscan"인 것 같습니다. Google에서 찾을 수 없습니다. nscan포트 스캔 응용 프로그램이므로 누군가가 수정 한 것일 수 있습니다 (그러나 저는 이론화 중입니다). 이 응용 프로그램이 명시 적으로 실행하려고하는 응용 프로그램이 아닌 경우 실행 파일 (예 :)을 찾아 find / -iname demond_nscan이름을 바꾸거나 권한을 변경 하여 실행 파일이 아닌 것을 권장 합니다. (뭔가에 실제로 중요한 경우에는이 방법은, 당신이 그것을 손실되지 않은, 그리고 그것은 다른 무언가에 의해 시작되었습니다 않다면, 당신은 알 수 있습니다 또한, 체크. crontab -l?
스티브 크룬을

1
demond_nscan은 lexmark 스캔 드라이버와 관련이있는 것 같습니다.
Wayne Werner

답변:


12

이 문제를 해결하는 것처럼 큰 로그 파일을 수정하는 것처럼 많은 양의 메시지를 일으키는 원인을 찾아야합니다.

그러나 그때까지 아래 중 하나에 로그 회전베이스를 넣을 수 있습니다.

  • 시간 (예 : 매일 회전)
  • 크기 (예 : 파일이 10mb에 도달하면 회전)

기본적으로 시스템에 설정되어 있습니다 : /etc/logrotate.d/rsyslog

 /var/log/syslog
{
    rotate 7
    daily
    missingok
    notifempty
    delaycompress
    compress
    postrotate
            reload rsyslog >/dev/null 2>&1 || true
    endscript
 }

이것으로부터 / var / log / syslog 파일을 매일 회전시키고 회전 된 파일의 사본7 개 보관할 수 있습니다.

크기 제한 (예 : 1mb)으로 회전하도록 변경하거나 저장하는 사본 수를 줄일 수 있습니다.

경고 : 이로 인해 문제의 근본 원인이 해결되지는 않지만 파일 시스템이 가득 차는 것을 막을 수 있으므로 시간이 조금 걸립니다.

  • 출처 : /etc/logrotate.d/rsyslog
  • 근원 : 남자 logrotate

2
이것은 실제 syslog의 크기를 제한하지 않습니다!
abu_bua

6

로그 회전 크기 제한

/etc/logrotate.d/syslog구성 파일을 엽니 다

sudo nano /etc/logrotate.d/syslog

파일이 sth로 보입니다. 처럼

/var/log/syslog
{
    rotate 7
    daily
    missingok
    notifempty
    delaycompress
    compress
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}
....
...

size 100k 를 들어 괄호 안에 추가하십시오 . 그 후에는 다음과 같아야합니다.

/var/log/syslog
{
    rotate 7
    size 100k
    daily
    missingok
    notifempty
    delaycompress
    compress
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}

이것은 실제 syslog 파일이 아니라 회전 파일의 파일 크기를 제한합니다. 파일을 저장하십시오. 다음 번에 로테이션 회전 작업이 시작되면 회전 된 로그의 크기가 제한됩니다.

현재 syslog의 크기 제한

의 크기를 제한하려면를 /var/log/syslog수정하고 /etc/rsyslog.d/50-default.conf고정 로그 크기를 설정해야합니다.

에서 다음 줄을 변경하여이 설정을 추가하거나 수정하십시오 /etc/rsyslog.d/50-default.conf.

.*;auth,authpriv.none       -/var/log/syslog

다음은 rsyslog 매뉴얼 에서 발췌 한 내용입니다 .

출력 채널$ outchannel 지시문을 통해 정의됩니다. 구문은 다음과 같습니다. $ outchannel name, file-name, max-size, action-on-max-size name은 출력 채널의 이름 (파일이 아님), file-name은 쓸 파일 이름입니다. , max-size 최대 허용 크기 및 action-on-max-size 최대 크기에 도달하면 명령이 실행됩니다. 이 명령에는 항상 정확히 하나의 매개 변수가 있습니다. 바이너리는 첫 번째 공간 이전의 최대 크기 크기의 해당 부분이며 해당 매개 변수는 해당 공간 뒤의 모든 것입니다. 로그 메시지를 파일에 기록하기 전에 max-size가 조회됩니다. 따라서 모든 메시지에 맞도록이 제한을 합리적으로 낮게 설정하십시오. 현재 릴리스의 경우 예상보다 1k 낮게 설정하면 도움이됩니다. 최대 크기는 항상 바이트 단위로 지정해야합니다. 특수 기호 (1k, 1m, …)이 시점에서. $ outchannel은“name”으로 채널을 정의합니다. 활성화되지 않습니다. 이렇게하려면 선택기 라인을 사용해야합니다 (아래 참조). 해당 선택기 라인에는 채널 이름과 그 앞에 $ 기호가 포함됩니다. 샘플은 다음과 같습니다.. : omfile : $ mychannel 현재 형식에서 출력 채널은 주로 출력 파일의 크기를 제한하는 기능을 제공합니다. 그렇게하려면 최대 크기를 지정하십시오. 이 크기에 도달하면 rsyslogd는 action-on-max-size 명령을 실행 한 다음 파일을 다시 열고 다시 시도합니다. 명령은 로그 회전 스크립트 또는 이와 유사한 것이어야합니다.

action-on-max-size 명령이 없거나 명령이 상황을 해결하지 못한 경우, 파일은 닫히고 rsyslogd에 의해 다시 열리지 않습니다 (물론 huus는 제외). 이 논리는 2GB보다 큰 파일에서 심각한 문제가 처음 발생했을 때 통합되어 rsyslogd 덤프 코어로 이어질 수 있습니다. 이러한 경우 단일 파일에 대한 쓰기를 중지하는 것이 더 적절합니다. 한편 rsyslogd는 2GB보다 큰 파일을 지원하도록 수정되었지만 파일 시스템 및 운영 체제 버전에서만 가능합니다. 따라서 2GB 파일 크기 제한을 적용하는 것이 여전히 합리적입니다.

여기에 최대 크기 1MB의이의 전에이 선을 배치 *.*; ...라인

$outchannel mysyslog,/var/log/syslog,1048576

그리고 변경 *.*; ...에 라인을

*.*;auth,authpriv.none  :omfile:$mysyslog

rsyslogd를 다시 시작하십시오.

sudo service rsyslog restart

0

나는 2 주 동안 Lexmark Pro915와 같은 문제가있었습니다. 나는 두 가지 일을했고 이제는 잘 작동합니다. 드라이버를 다시 설치했습니다. (이것이 도움이되었다고 생각하지 마십시오.) 나는 총 길이가 거의 15 '길었고 완전히 호환되지 않았을 수도있는 USB 확장을 사용했습니다. Linux 시스템 용 Lexmark 드라이버가 불완전하거나 시간이 부족한 신호를 감지하여 하루에 100 억 번 알려줄 것으로 생각합니다. 어떻게 든 연결을 개선하십시오.

Logrotate 및 유사한 솔루션이 도움이되지 않았습니다. Kern.log와 syslog는 하루에 1TB 이상을 로깅했습니다! 12 분마다 실행되도록 Logrotate가 도움이 될 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.