inode 번호 대신 파일 이름을 어떻게 줄일 수 있나요?

inode 번호 대신 파일 이름을 어떻게 줄일 수 있나요?

재부팅 시 로그 파일을 회전시키는 소프트웨어가 있습니다. 하지만 개발 중에 자주 재시작을 하기 때문에 항상 최신 로그 파일을 모니터링하고 싶습니다.

less정상적으로 시작 하고 +를 끝까지 less program.log누르면 이전 로그 파일이 회전하면서 계속 모니터링됩니다. 이는 inode 번호가 동일하게 유지되고 해당 inode를 가리키는 열린 파일 핸들이 있기 때문이라고 생각합니다.Shiftfless

현재 호출된 로그 파일의 최신 활동을 모니터링할 수 있습니까 program.log?

특히 저는 Sun OS용으로 개발 중이므로 Sun OS용 솔루션이 이상적일 것입니다.

답변1

less --follow-name귀하의 버전이 less이를 지원하는 경우 이를 사용하십시오.
이 옵션은 버전 416에서 도입되었습니다.

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

답변2

less옵션은 --follow-name솔루션의 일부일 뿐이므로
다른 tail -F인수가 필요합니다.

less --follow-name +F file.log

개별 옵션은 less --follow-name file.log파일이 업데이트된 후에 실제로 시작되지 않습니다. 팔로우 모드로 들어가려면 를 눌러야 합니다 ShiftF.
(내비게이션 모드를 종료합니다 ControlC.)

문서를 따르는 대신,--follow-name 행동을 바꾸다더 적은.
파일 설명자가 아닌 파일 이름을 기반으로 내부 명령 키를 따릅니다 .ShiftFless

less또한 팔로우 모드에서 시작할 수 있는 일반 옵션이 없습니다 .
하지만 명령줄을 사용하여 제공할 수 있습니다.실행 버튼일단 시작되면 와 함께 수정자 옵션을 사용하면 접두어가 붙는 (수정된) 따르기 모드에서 실제로 시작됩니다 +.
+Fless

단독으로 사용하면 +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

관련 정보