inode 번호 대신 파일 이름을 줄이려면 어떻게 해야 합니까?

inode 번호 대신 파일 이름을 줄이려면 어떻게 해야 합니까?

다시 시작할 때 로그 파일을 회전시키는 소프트웨어가 있습니다. 다만, 개발을 하다 보면 재시작을 많이 하게 되기 때문에 수시로 최신 로그 파일을 모니터링 해보고 싶습니다.

less정상적으로 시작 하고 +를 less program.log눌러 꼬리를 누르면 로그 파일이 순환될 때 이전 로그 파일을 계속 모니터링합니다. 이는 inode 번호가 동일하게 유지되고 해당 inode에 대한 열린 파일 핸들이 있기 때문이라고 가정합니다.Shiftfless

현재 호출되는 로그 파일에 대한 최신 활동을 모니터링할 수 있습니까 program.log?

특히 저는 Sun OS에서 작업하고 있으므로 Sun OS에서 작동하는 솔루션이 이상적일 것입니다.

답변1

에서 지원하는 less --follow-name경우 사용하세요 . 해당 옵션은 버전 416에서 도입되었습니다.less

Shift+F그런 다음 내에서 일반적인 후속 명령을 수행하십시오 less.

답변2

옵션 less--follow-name솔루션의 일부일 뿐입니다.
을 바꾸려면 tail -F다른 인수가 필요합니다.

less --follow-name +F file.log

같은 옵션만으로는 less --follow-name file.log파일 업데이트를 따라 실제로 시작되지 않습니다. 을 눌러 팔로우 모드로 들어가야 합니다 ShiftF.
( 로 탐색하려면 모드를 종료하세요 ControlC.)

파일을 따르는 대신,--follow-name 행동을 수정합니다덜. 파일 설명자가 아닌 파일 이름을 기반으로 follow 내부의
명령 키를 만듭니다 .ShiftFless

less또한 팔로우 모드에서 시작하는 일반적인 옵션이 없습니다 .
하지만 명령줄을 사용하여 다음을 제공할 수 있습니다.실행할 키 입력시작 후 앞에 +.
수정자 옵션을 과 결합하면 +F실제로 less(수정된) 팔로우 모드로 시작됩니다.

+F일반과 동등한 용도로 단독으로 사용하십시오 tail -f.

less +F file.log

답변3

방금 다음 U&L Q&A에서 답변을 찾았습니다.로그 회전 파일을 수행하는 방법은 무엇입니까 tail -f?.

사용 tail:

(시스템에 GNU tail을 설치하는 것이 옵션인 경우)

tail -F program.log

로부터꼬리 매뉴얼 페이지:

   -f,      --follow[={name|descriptor}]
            output appended data as the file grows; -f, 
            --follow, and --follow=descriptor are equivalent

   -F       same as --follow=name --retry

   --retry  keep  trying  to  open  a  file even when it is or becomes
            inaccessible; useful when following by name, i.e., with
            --follow=name

핵심은 --retry스위치다. 이는 tail명령이 파일 이름을 따라 계속 재시도하도록 지시합니다. 스위치 는 a 와 a 를 -F모두 수행합니다 .-f--retry

사용less

@StephaneChazela가 의견에서 지적했듯이 다음은 작동하지 않습니다.

tail -F program.log | less

당신이 가진 유일한 다른 옵션은 --follow-name스위치와 less파일을 직접 지원한다고 가정하고 tail완전히 사용하지 않고 덜 직접적으로 사용하는 것입니다.

less --follow-name program.log

관련 정보