본문 바로가기
프로그래밍/linux

Kill 명령어 사용

by W.C. 2018. 2. 8.

python process 를 백그라운드로 동작 시키기 위해서는 nohup이나 뒤에 '&'를 붙여 주면 되는데...


종료하기 위해서는 해당 PID를 kill 명령을 내려야 한다.



예전에는 kill -9 만 썼는데...


이게 그렇게 나이스 한 방법은 아니라는게 문제다...


그래서 kill 명령 관련 자료를 찾아 보았다.


kill 명령은 프로세스를 무조건 죽이는 명령이 아니라


해당 프로세스와 커뮤니케이션을 한다고 보면 된다.


'난 정말 아무것도 모르고 사용 한 것이었다..ㅡㅡ'


'kill -l'


명령을 보면 kill 명령 옵션이라고 해야 하나 그런 것들이 다양하게 나온다.



음.. 도대체 뭐야...


  1. SIGHUP(HUP) : 연결 끊기. 프로세스의 설정파일을 다시 읽는데 사용된다.

  2. SIGINT(INT) : 인터럽트

  3. SIGQUIOT(QUIT) : 종료

  4. SIGILL(ILL) : 잘못된 명령

  5. SIGTRAP(TRAP) : 트렙 추적

  6. SIGIOT(IOT) : IOT 명령

  7. SIGBUS(BUS) : 버스 에러

  8. SIGFPE(FPE) : 고정 소수점 예외

  9. SIGKILL(KILL) : 죽이기. 이 시그널은 잡히지 않는다.

  10. SIGUSR1(USR1) : 사용자 정의 시그널 1

  11. SIGSEGV(SEGV) : 세그멘테이션 위반

  12. SIGUSR2(USR2) : 사용자 정의 시그널 2

  13. SIGPIPE(PIPE) : 읽을 것이 없는 파이프에 대한 시그널

  14. SIGALRM(ALRM) : 경고 클럭

  15. SIGTERM(TERM) : 소프트웨어 종료 시그널, 일반적으로 kill 시그널이 전송되기 전에 전송된다. 잡히는 시그널이기 때문에 종료되는 것을 트랙할 수 있다.

  16. SIGKFLT : 코프로세서 스택 실패

  17. SIGCHLD(CHLD) : 자식 프로세스의 상태변화

  18. SIGCONT(CONT) : STOP 시그널 이후 계속 진행할 때 사용

  19. SIGSTOP(STOP) : 정지. 이 시그널 역시 잡을 수 없다.

  20. SIGTSTP(TSTP) : 키보드에 의해 발생하는 시그널로 Ctrl+Z로 생성된다.


뭐가 많다..


하지만 프로세스를 종료 하는데 쓰이는 것은 -9 보다는 -15를 추천한다.


-9 는 강제 종료 개념이고


-15는 진행중인 작업과 clean up 작업을 완료 하고 종료 하는 것이라고 보면 된다.


간단히 


백그라운드에서 돌고 있는 프로세스를 종료하는 스크립트를 예로 들면


if [ -f $PID_FILE ]; then

    kill -15 `cat $PID_FILE`


    while kill -0 `cat $PID_FILE` >/dev/null 2>&1

    do

        echo Exiting...

        sleep 1

    done

    echo STOPPED

    rm $PID_FILE

else

    echo "It seems that the process isn't running."

fi


이정도로 하면 되겠다.

'프로그래밍 > linux' 카테고리의 다른 글

Bash Shell euc-kr => utf-8 변환  (0) 2018.02.13
alternative 를 이용한 기본 java version 변경  (0) 2018.02.13
서버에 열려 있는 PORT 확인  (0) 2017.12.20
SSH SESSION 관리  (0) 2017.12.20
ulimit 설정 관련  (0) 2016.05.13