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 버전을 확인하시기 바랍니다.