데몬 프로세스가 PID(프로세스 ID)를 파일에 저장하는 이유는 무엇입니까?

데몬 프로세스가 PID(프로세스 ID)를 파일에 저장하는 이유는 무엇입니까?

내 시스템 /run디렉토리에는 확장자를 가진 여러 *.pid파일이 있고 실행 중인 데몬의 프로세스 ID를 저장합니다.

% ls -1 /run/*.pid                    
acpid.pid
crond.pid
dhclient-wlp2s0.pid
irqbalance.pid
lightdm.pid
nginx.pid
rsyslogd.pid

일반적으로 이것이 다른 많은 데몬이 수행하는 작업이며 데몬 관리 스크립트는 /etc/init.d/*마지막 실행 인스턴스에서 pid를 읽고 새 인스턴스를 시작할 때 이를 재사용합니다.
왜? 그냥 데몬을 시작하고 새 PID를 부여하면 어떨까요?
데몬이 해당 식별자를 가질 것으로 예상하고 다른 프로그램이 해당 pid를 사용하는 경우 혼동을 일으키는 다른 프로그램(예: rsyslog)이 있습니까?

답변1

많은 데몬과 마찬가지로 데몬 인스턴스는 언제든지 시스템에서 하나만 실행되어야 합니다. 이 사용 사례에서 데몬은 일반적으로 데몬 인스턴스가 실행 중임을 나타내기 위해 잘 알려진 디렉터리(Linux의 경우 current /run, Previous )에 PID를 저장합니다./var/run

이러한 데몬의 두 번째 인스턴스를 호출하려고 하면 새로 호출된 데몬은 기존 항목을 확인하고(이 항목을 잠금 파일로 처리) /run발견하면 종료됩니다.

데몬이 다시 시작되면 새 인스턴스의 PID가 이 파일에 기록됩니다. 새 인스턴스에는 자체 PID가 있으며 해당 PID로는 프로세스를 시작할 수 없습니다.

PID 파일은 데몬을 중지하기 위해 종료할 프로세스를 결정하는 데에도 사용됩니다.

관련 정보