.png)
SSH를 사용하여 연결하는 메일 서버를 실행하고 있습니다. My는 .bash_profile
특정 screen
세션에 SSH 세션을 연결하도록 구성되어 있습니다.
이제 이 스크린 세션의 한 창에 로그(예: syslog)를 인쇄하고 싶습니다. 나는 달리기를 시도했다.
tail -f /var/log/syslog
하지만 출력은 매일 6시 25분에 중지됩니다. 로그가 회전되는 시점인 것 같습니다. 그렇다면 로그를 화면에 인쇄할 수 있는 방법이 있습니까?
답변1
당신은 필요tail --follow=name /var/log/syslog
그 이유는 성능상의 이유로 기본적으로 tail
지정된 파일을 열고 감시하기 때문입니다.파일 설명자그것은 open(2)
변화에 대한 요청으로부터 얻습니다. 파일이 변경되는 한(먼저 잘라서 추가하거나 다시 작성하는 동안) 정상적으로 작동하지만 파일이 다음과 같은 경우에는 작동이 중지됩니다.교체됨—즉, 동일한 이름으로 제거되고 생성되며 이것이 logrotate
일반적으로 수행되는 작업입니다.
"이름" 모드는 파일 시스템 계층을 통해 매번 파일 이름을 실제로 "확인"하는 더 비용이 많이 드는 syscall을 사용 --follow
하게 하며 , 파일이 변경된 것을 발견하면 소위tail
stat(2)
tail
"아이노드", tail
파일을 다시 엽니다.
다음의 출력 man tail
:
-f, --follow[={name|descriptor}]
파일이 커짐에 따라 추가된 데이터를 출력합니다. 옵션 인수가 없으면 '설명자'를 의미합니다.
-F
다음과 같이 정의된 명령줄 옵션을 볼 수도 있습니다.
-F
같은--follow=name --retry
답변2
당신의 추측은 실제로 정확합니다. 이때 syslog는 로그에 쓰기를 중단하고 gz를 만들고 로그를 다시 시작합니다.
당신은 시도해 볼 수 있습니다
tail -f --retry /var/log/syslog
이렇게 하면 tail은 로그 회전이 완료되었을 때 파일을 다시 열려고 시도해야 합니다.