아파치 재시작 오류 | (20014)Internal error: Error retrieving pid file logs/httpd.pid
아파치 재시작을 진행했으나
service httpd restart
(20014)Internal error: Error retrieving pid file logs/httpd.pid
Remove it before continuing if it is corrupted.
위 두 가지 오류가 확인될 수 있습니다. apachectl restart 등의 명령어를 입력했지만 위와 같은 오류가 발생한 이유는 아파치가 정상적으로 종료되지 않았기 때문에 발생하는 오류입니다.
✅ Error retrieving pid file logs/httpd.pid 해결하기
로그 폴더에서 httpd.pid를 확인했을 때 폴더가 비어 있음을 확인할 수 있습니다.
cd /etc/httpd/logs/
ll httpd.pid
-rw-r--r-- 1 root system 0 Jan 23 13:21 httpd.pid
cp -a httpd.pid httpd.pid_20xx-05-15
1. 원본 파일 백업 후 루트 계정의 pid 값 넣기
ps -ef | grep httpd
root 694 1 0 13:21 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
nobody 749 694 0 13:21 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
nobody 752 694 0 13:21 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
nobody 753 694 0 13:21 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
nobody 754 694 0 13:21 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
root 1495 1463 0 13:33 pts/0 00:00:00 grep --color=auto httpd
vi httpd.pid
694
:wq
service httpd stop
service httpd start
2. 아파치 강제 종료하기
첫 번째 방법으로 진행이 해결이 되겠지만 다른 방법으로 httpd를 강제 종료 할 수 있습니다. pid를 하나 씩 kill 시키긴 힘들기 때문에 “killall -9 httpd” 명령어를 실행합니다.
killall -9 httpd
service httpd start
해결이 안될 경우 httpd.pid 파일을 삭제 후 재시작을 해도 됩니다. httpd 구동 시 자동 생성되는 파일이기 때문에 삭제해도 괜찮습니다.
✅ httpd.pid 파일이란?
Apache 웹 서버에서 사용되는 PID(프로세스 ID 번호)는 서버의 파일에 저장되며, 웹 서버 구성 파일로 예를 들어 httpd.conf 파일에 PID 파일의 위치가 설정되어 있을 수 있습니다.
vi /etc/httpd/conf/httpd.conf
PidFile logs/httpd.pid
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
위와 같은 PidFile 설정이 되어 있다면,
~]# ps -ef | grep httpd
root 1512 1 0 13:45 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
nobody 1514 1512 0 13:45 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
nobody 1515 1512 0 13:45 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
nobody 1516 1512 0 13:45 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
nobody 1517 1512 0 13:45 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
root 1731 1463 0 13:45 pts/0 00:00:00 grep --color=auto httpd
]# cat httpd.pid
1512
ps 명령어와 cat 명령어로 pid가 일치함을 확인할 수 있습니다.
실행중인 HTTP에 httpd.pid가 필요한 이유는 아파치 서버가 시작되면 HTTP 서버는 httpd.pid 파일에 pid(프로세스 ID)를 기록하는데 현재 서버에서 실행 중인 httpd 서버 프로세스의 pid 번호이며, httpd 서버가 다시 시작될 때마다 새로운 pid가 생성됩니다.
서버 프로세스는 pid 파일을 검사하여 자체 중지하거나 다른 httpd 프로세스가 중복으로 2번 실행되는 것을 막을 수 있습니다. PidFile을 사용해서 서버의 위험 요소를 수동으로 제거할 수 있습니다.
Error retrieving pid file logs/httpd.pid와 PidFile에 대해 알아봤습니다.