[server] 시스템 드롭 인이 PID 파일을 작성하지 못함

경로에서 systemd-machined에 대한 드롭 인이 /etc/systemd/system/systemd-machined.service.d/10-machined-pid-file.conf있습니다. 내가 실행할 때 나는 systemctl status systemd-machined라인을 볼

Drop-In: /etc/systemd/system/systemd-machined.service.d
       └─10-machined-pid-file.conf

그러나 / var / run /에 PID 파일이 표시되지 않습니다. 내 드롭 인에 따라

[Serivce]
PIDFile=/var/run/machined.pid

해당 PID 파일을 만드는 데 문제가 없어야한다고 생각합니다. 내가 놓친 것이 있습니까?



답변

PIDFile=설정하지 않는 만들 PID를 파일을. 그것은 지난 40 년 동안과 마찬가지로 여전히 서비스 자체에 달려 있습니다. 오히려이 옵션은 systemd에게 기존 PID 파일 (있는 경우)을 찾을 수있는 위치를 알려줍니다. systemd는 자체 cgroup에 서비스를 유지하고 추적하기 위해 PID 파일이 필요하지 않으므로 대부분의 경우 전혀 필요하지 않습니다. 그러나 systemd는 서비스가 종료 된 후 서비스 정리에 실패하면 서비스가 종료 될 때 PID 파일 을 삭제 합니다.

로부터 문서 :

이 데몬의 PID 파일을 가리키는 절대 파일 이름을 사용합니다. Type=로 설정된 서비스에는이 옵션을 사용하는 것이 좋습니다 forking. systemd는 서비스 시작 후 데몬 기본 프로세스의 PID를 읽습니다. systemd는 여기에 구성된 파일에 쓰지 않지만 여전히 존재하는 경우 서비스가 종료 된 후 파일을 제거합니다.


답변

유감스럽게도 systemd는 PIDFile=서비스 단위 파일에 행 을 지정하더라도 비포 킹 서비스에 대한 PID 파일을 생성하지 않습니다 . 그러나 다음 ExecStartPost=과 같은 줄로 속일 수 있습니다 .

ExecStartPost=/bin/sh -c 'umask 022; pgrep YOURSERVICE > /var/run/YOURSERVICE.pid'


답변