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


11

경로에서 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 파일을 만드는 데 문제가 없어야한다고 생각합니다. 내가 놓친 것이 있습니까?

답변:


18

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

로부터 문서 :

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


설명해 주셔서 감사합니다. 필자의 경우 playframework는 프로젝트 루트 폴더에 pid 파일을 만들었지만이 프로세스 / 서비스를 중지하거나 종료해도 "pid"파일은 삭제되지 않았습니다. "pid"파일로 인해 프로젝트 서비스를 다시 시작할 수 없습니다. 이 "PIDFile = / path / to / pid"행을 시스템 서비스 파일에 추가하면 정상적으로 작동합니다. 서비스가 중지되거나 종료되면 pid 파일을 삭제했습니다
Ikrom

10

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

ExecStartPost=/bin/sh -c 'umask 022; pgrep YOURSERVICE > /var/run/YOURSERVICE.pid'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.