IT/Unix & Linux

[AIX] cron 종료 방법 - respawn daemon kill

슈다루냥 2019. 6. 19.
728x90

안녕하세요. 슈다 입니다.

 

특정 프로세스를 종료하기 위해 kill -9 명령을 사용하였는데,

다른 PID 번호를 부여받고 자동으로 재실행 되는 프로세스들이 있습니다.

대표적으로 cron daemon 등이 있는데요, 이는 시스템 운영을 위해 종료되어도 다시 살아나도록 init 상에서 설정되어 있기 때문입니다.

 

그렇다면 이러한 프로세스를 종료하는 방법을 아래의 상황 예시를 통해 알아보겠습니다.

 

상황)

/mnt 파일시스템을 umount 하고 싶지만, busy가 뜨며 mount가 되지 않는다.

fuser -c /mnt  명령을 통해 /mnt 를 사용하는 프로세스를 확인하였는데 cron daemon이 포함되어 있었고,

해당 PID를 kill -9 PID 하였는데 cron 프로세스가 되살아 나 umount를 진행할 수 없다.

 

# fuser -c /mnt

PID가 출력됩니다.

 

# ps -ef |grep PID

PID를 통해 프로세스를 조회합니다.

 

# kill -9 PID

해당 프로세스를 종료하도록 kill 을 사용하지만, fuser, ps 명령으로 확인하면 여전히 cron daemon이 실행중 입니다.

 

해결방법)

inittab 의 cron daemon 설정을 변경해 줍니다.

/etc/inittab 에서 cron을 확인해 보면 아래처럼 되어 있는 것을 확인할 수 있습니다.

   cron:23456789:respawn:/usr/sbin/cron

respawn 이라고 적힌 것이 보이시나요? 위 내용을 풀이하면

"cron daemon이 2~9 시그널 값을 받는 경우 respawn 되도록 한다" 가 되겠습니다.

 

그렇다면 respawn 옵션 대신 once 옵션을 적용하여 프로세스가 재실행 되지 않도록 해줍니다.

기존 내용은 ":" 을 사용하여 주석 처리하고 (inittab 은 : 가 주석)

아래처럼 내용을 변경하여 줍니다.

  :cron:23456789:respawn:/usr/sbin/cron
  cron:23456789:once:/usr/sbin/cron

 

inittab 을 수정하였으면, 2번 시그널로 init을 재시작 해줍니다. (시스템 리부팅 없이 멀티 유저 모드로 init 재시작)

# init 2

 

cron daemon 을 kill 합니다.

# kill -9 {cron daemon PID}

 

필요한 프로세스를 kill 하였으면 inittab 을 원복 합니다.

728x90
반응형