더북(TheBook)

프로세스 종료하기

실행 중인 프로세스를 종료하는 명령은 kill입니다. kill은 사용자가 프로세스에 일정한 신호를 보내서 프로세스를 종료합니다. 신호의 종류는 여러 가지가 있는데, kill -l 명령을 사용하면 신호의 종류를 확인할 수 있습니다.

shinjaehun@losttemple:~$ kill -l
1) SIGHUP        2) SIGINT        3) SIGQUIT       4) SIGILL        5) SIGTRAP
6) SIGABRT       7) SIGBUS        8) SIGFPE        9) SIGKILL       10) SIGUSR1
11) SIGSEGV      12) SIGUSR2      13) SIGPIPE      14) SIGALRM      15) SIGTERM
16) SIGSTKFLT    17) SIGCHLD      18) SIGCONT      19) SIGSTOP      20) SIGTSTP
21) SIGTTIN      22) SIGTTOU      23) SIGURG       24) SIGXCPU      25) SIGXFSZ
26) SIGVTALRM    27) SIGPROF      28) SIGWINCH     29) SIGIO        30) SIGPWR
31) SIGSYS       34) SIGRTMIN     35) SIGRTMIN+1   36) SIGRTMIN+2   37) SIGRTMIN+3
38) SIGRTMIN+4   39) SIGRTMIN+5   40) SIGRTMIN+6   41) SIGRTMIN+7   42) SIGRTMIN+8
43) SIGRTMIN+9   44) SIGRTMIN+10  45) SIGRTMIN+11  46) SIGRTMIN+12  47) SIGRTMIN+13
48) SIGRTMIN+14  49) SIGRTMIN+15  50) SIGRTMAX-14  51) SIGRTMAX-13  52) SIGRTMAX-12
53) SIGRTMAX-11  54) SIGRTMAX-10  55) SIGRTMAX-9   56) SIGRTMAX-8   57) SIGRTMAX-7
58) SIGRTMAX-6   59) SIGRTMAX-5   60) SIGRTMAX-4   61) SIGRTMAX-3   62) SIGRTMAX-2
63) SIGRTMAX-1   64) SIGRTMAX

프로세스를 종료해봅시다. 웹 브라우저 파이어폭스를 실행시키고 top으로 확인해보니 firefox 프로세스의 CPU 점유율이 매우 높습니다. 가장 왼쪽 열에 해당 프로세스의 PID를 확인할 수 있습니다.

그림 3-13 top 명령어로 PID 확인하기
이렇게 하세요!

물론 ps 명령으로도 프로세스의 PID를 알아낼 수도 있습니다.

shinjaehun@losttemple:~$ ps -ef | grep firefox
shinjae+  4789  2180  4 11:08 ?        00:02:03 /usr/lib/firefox/firefox
shinjae+  5243  4789 13 11:58 ?        00:00:16 /usr/lib/firefox/plugin-container 
/usr/lib/flashplugin-installer/libflashplayer.so -greomni /usr/lib/firefox/omni.ja 
-appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 4789 true 
plugin
shinjae+  5283  4706  0 12:00 pts/0    00:00:00 grep --color=auto firefox

프로세스를 종료하기 위해 kill -[신호] [PID] 번호 형식으로 입력합니다. kill은 이름과 달리 프로세스를 죽이기 위해서만 사용되지 않습니다. 실행 중인 프로세스에 시스템 신호를 보내 프로세스 상태를 변경하는 것이 kill의 목적입니다. 기본값인 15번 신호는 프로세스를 종료하는 SIGTERM입니다. 아무 옵션 없이 kill을 실행하면 대부분의 정상적인 프로세스들은 신호를 받고 자동으로 종료합니다.

shinjaehun@losttemple:~$ kill 4789

프로세스가 종료되었는지 다시 ps 명령으로 확인합니다.

shinjaehun@losttemple:~$ ps -ef | grep firefox
shinjae+  5358  4706  0 12:01 pts/0    00:00:00 grep --color=auto firefox

대부분의 프로세스는 SIGTERM 신호로 종료되지만 종료되지 않는 경우도 있습니다. 이럴 때 9번 신호인 SIGKILL을 사용합니다. SIGKILL을 사용하면 프로세스를 강제로 종료시킵니다.

shinjaehun@losttemple:~$ kill -9 4789

1번 신호 SIGHUP은 리눅스 서버를 운영하는 데 유용한 신호입니다. SIGHUP 신호는 프로세스를 멈추지 않고 다시 실행할 수 있습니다. 환경 설정을 변경하여 서비스를 다시 실행할 때 사용 가능합니다.

shinjaehun@losttemple:~$ kill -1 4789
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.