을(를) 사용하고 rsyslog
있으며 에 로그를 보내고 싶습니다 /dev/xconsole
.
다음과 같은 관련 줄이 있습니다/etc/rsyslog.conf
*.*;cron.!=info;mail.!=info |/dev/xconsole
이는 부분적으로만 효과적입니다. /dev/xconsole
cca 64kB만 저장할 수 있는 것 같습니다 . 버퍼가 가득 차면 새 로그가 손실됩니다.
다음 테스트를 수행했습니다.
1) add to `/etc/rsyslog.conf`
*.*;cron.!=info;mail.!=info /tmp/aaa
2) reboot
3) cat /dev/xconsole > /tmp/bbb
4) diff /tmp/aaa /tmp/bbb
이제 aaa와 bbb는 동일해야 합니다. 그러나 그들은 그렇지 않습니다. aaa에는 전체 로그가 포함되어 있지만 bbb에는 마지막 229줄이 누락되어 있습니다.
이 문제를 어떻게 해결할 수 있나요? 크기가 /dev/xconsole
정말 제한되어 있나요? 크기를 늘릴 수 있나요?
답변1
기술적으로는 /dev/xconsole
그렇지 않습니다 .크기일명 Named Pipe이기 때문에선입선출. 그러나 Linux 커널은 사용 시 각 객체에 대해 64KiB(Linux 3.x) 또는 4KiB(Linux 2.x)의 버퍼를 제공합니다. 파일 시스템에는 없고 메모리에만 있습니다. 바라보다https://stackoverflow.com/questions/4624071/pipe-buffer-size-is-4k-or-64k그리고https://unix.stackexchange.com/a/229544/80483더 많은 정보를 알고 싶습니다.
응용 프로그램(xconsole)이 제때에 데이터를 읽지 않으면 버퍼가 가득 차서 syslog에 쓸 수 없으며 차단되지 않도록 메시지가 삭제됩니다.