/etc/rc.d/ 스크립트에서 프로그램 정상 종료하고 restart하는 방법
글쓴이: dorado2 / 작성시간: 목, 2008/05/08 - 4:42오후
부팅시 실행되는 /etc/rc.d/ 아래 스크립트를 작성중입니다.
서버와 접속하는 클라이언트 프로그램이고요.
while과 sleep을 이용해서 process가 죽었는지 체크하고
죽으면 다시 살려주는 일을 합니다.
그런데 설정값을 바꾼 후에 실행될 restart나 stop 명령을 구현하려다 보니
설정값을 파일에 쓰고, 해당 프로세스를 죽여야 합니다. 그리고 다시 실행을 시켜야 하는데요.
killall 로 죽이는데, 이 경우 socket이 제대로 닫히지 않아서
netstat으로 보면 CLOSE_WAIT 상태인 것이 보이더라구요. 그래서 다른 쪽에서 제쪽으로 순간적으로 연결이 안 되는 상태입니다. CLOSE_WAIT가 풀려야 연결이 되는 것 같네요.
기본적으로 SIGTERM을 보낸다고 되어 있어서
killall -KILL 명령으로 SIGKILL 명령도 주어봤지만 바뀌는 것은 없네요.
어떻게 kill을 사용해서 프로그램을 정상적으로 종료할 수 있을까요? 소켓 등의 자원을 제대로 반환하게요.
Forums:
댓글 달기