systemd가 표준 출력 파일에 쓰기를 중지합니다.

systemd가 표준 출력 파일에 쓰기를 중지합니다.

systemdUbuntu 20.04에는 다음을 지정한 간단한 서비스가 있습니다 .StandardOutput=file:/var/log/appname/console.log

서비스를 처음 시작하면 파일이 생성되고 파일에 애플리케이션의 출력이 표시됩니다. 그러나 파일은 한 번만 기록됩니다. 서비스를 다시 시작하면 응용 프로그램이 실행 중이더라도 파일에 아무 것도 기록되지 않습니다. 파일을 삭제하고 서비스를 다시 시작하면 파일이 다시 나타나는데, 또 한 번만 기록됩니다.

왜 이런 일이 발생합니까? 다른 형태의 표준 출력 리디렉션을 사용해야 합니까?

답변1

Ubuntu 20.04에서도 동일한 문제가 발생했지만 내용은 실제로 파일 시작 부분에 작성되어 명령에 보이지 않게 되었습니다 tail. @steeldriver가 지적했듯이 이 동작은 예상되며 문서에 설명되어 있습니다.

이 문제는 여기에서도 논의됩니다.https://github.com/systemd/systemd/issues/8983

해결책게시일: 2021년 3월 30일 version 248:

truncate:path위와 유사 file:path하지만 파일을 열 때 파일이 잘립니다.

해결책:

ExecStartPre=/usr/bin/truncate --size=0 FILEPATH

참고자료:

관련 정보