tail이 삭제되고 다시 생성된 로그 파일과 해당 상위 디렉터리에 자동으로 다시 연결되도록 만드는 방법

tail이 삭제되고 다시 생성된 로그 파일과 해당 상위 디렉터리에 자동으로 다시 연결되도록 만드는 방법

servicemix 인스턴스(경로 = ) --follow=name에서 로그 파일을 보는 옵션과 함께 tail을 사용하고 있습니다 .${smx_home}/data/log/servicemix.log

ServiceMix에는 캐싱 없이 완전히 다시 시작하는 "좋은" 기능이 있으며 servicemix clean${smx_home}/data 디렉터리 전체도 삭제하는 것 같습니다.

폴더와 로그 파일이 삭제되면 다음 메시지가 나타납니다.

tail: data/log/servicemix.log: No such file or directory

Ctrl-C를 누르고 다음과 같이 꼬리 명령을 다시 시작해야 합니다.

tail --follow=name data/log/servicemix.log

ServiceMix의 "클린 부팅"이 파일뿐만 아니라 전체 디렉터리를 삭제하고 초기 inode가 유효하지 않기 때문에 문제가 발생합니다.

삭제된 로그에 tail을 다시 연결하는 방법이 있습니까?

tail이 작동하지 않으면 대안이 있습니까(예: more또는 사용 less)?

고쳐 쓰다:

-F --follow또한 및 와 다양한 조합을 테스트했습니다.--retry

tail --follow=name --retry data/log/servicemix.log

이것도 작동하지 않습니다.

내 꼬리 버전은

tail (GNU coreutils) 8.4

답변1

8.26 이전 버전의 coreutils에서는 tail폴더의 파일을 계속 삭제할 수 없는 것 같습니다. 당신은 그것을 사용할 수 있습니다 less:

less --follow-name +F data/log/servicemix.log

답변2

--retry에 옵션을 추가 하거나 --follow=name이 조합의 약칭을 사용합니다 -F. tail에 파일이 없다는 오류가 표시되지만, 파일이 생성된 후 새 디렉터리에서 새 파일을 찾습니다.

전체 정보는 매뉴얼 페이지를 확인하세요.

답변3

일부 특정 버전의 tail에서는 버그로 인해 이것이 불가능합니다.

디렉토리가 삭제되면 tail 명령은 파일에 다시 연결할 수 없습니다. 이전 설정에서 이전에 이 문제를 재현할 수 있었지만 현재 버전에서 위의 답변을 시도하면 효과가 있었습니다. 따라서 위의 답변이 효과가 없다면 tail 버전을 확인하시기 바랍니다.

관련 정보