logrotate의 -HUP를 종료하기 위한 올바른 pid를 찾으세요.

logrotate의 -HUP를 종료하기 위한 올바른 pid를 찾으세요.

나는 logrotate 구성을 배우고 있습니다. 그래서 명령의 매뉴얼 페이지를 읽고 특정 애플리케이션 로그에 대한 logrotate 구성을 살펴보았는데 아래 코드 조각이 계속 표시됩니다. (Centos 6.8 이하 환경)

postrotate
   /bin/kill -HUP `cat /var/run/XXX.pid 2>/dev/null` 2> /dev/null || true
endscript

아니면 그런 것. 내 질문은 필요한 프로세스( kill -HUP또는 에서 찾을 수 없는 프로세스)를 사용할 수 없는 경우 프로세스가 파일 쓰기를 계속하는 것을 어떻게 중지합니까? 프로세스를 종료하는 방법을 알고 있지만 파일에 쓰는 것을 중지하거나 위의 예처럼 파일 설명자를 다시 읽도록 하고 싶습니다. 아니면 적어도 그렇게 한다고 생각합니다.kill --helpman killman signal/var/run/xx.pid

답변1

/var/run어떤 PID를 제거해야 하는지 아는 것은 pid 파일을 그 안에(또는 /run/user/$UID자신의 사용자 계정으로 관리되는 프로세스에) 두는 데 핵심입니다. 프로세스가 해당 파일에 쓰지 않는 경우 그렇게 하도록 구성하거나(가능한 경우) 통과해야 합니다.가정 교사pid 파일을 생성합니다.

최후의 수단으로 로그 파일이 열려 있는 프로세스를 확인할 수 있습니다.fuser, 또는 이러한 프로세스를 직접 종료할 수도 있습니다(이렇게 하면 -w파일을 쓰고 있는 프로세스만 종료하는 옵션을 잊지 마세요).

ps $(fuser /path/to/log/file 2>/dev/null)
fuser -w -k -HUP /path/to/log/file

관련 정보