리눅스에서 아래와 같이
bind / nginx등 대규모 개발 프로젝트에서도 굳이 PID 파일을 만들고, 이 값을 확인하여 프로세스 관리하는 이유가 궁금합니다.
실시간으로 pgrep/pid 또는 시스템 콜을 써서 확인하는 것 보다 빠르거나 뭔가의 구멍을 피하는 방법이라서 이렇게 사용하는 건지요 ?
❯ cat nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid; # <================ !!!
...
https://man.openbsd.org/OpenBSD-5.5/nginx.conf.5
핑프?
구글에 한줄만 쳐도 나옵니다.
1. nginx 가 직접 pid 를 남겨놔주면 구지 pgrep 같은걸로 안찾아도 된다는점
2. 내가 찾으려는 nginx 프로세스를 정확히 찾을 자신이 있는가? 또는 구지 그걸 찾기 위해 또 코드를 작성해야하나..
3. 그걸 찾는 코드를 짯는데 그걸 신뢰할만한가? 그냥 직접 남겨준 pid 파일이 더 신뢰가지 않는가?
.pid 파일이 존재하는데 프로세스가 없다면 보통 비정상종료의 경우로 볼수 있죠..
비슷한 예로 .lock 화일도 사용하죠.
.pid화일의 사용이 100%정확하게 동작을 보장하지는 않지만,
흔히 편한게 사용하는 편법 기법 같습니다. 코드짜기 귀찮아서인듯 하네요.