본문 바로가기

Ubuntu/linux Command

Linux System Command ( kill )

728x90

kill 은 프로세스에 시그널을 보내는 명령어로 signal 을 받은 프로세스의 기본 동작이 종료이기때문에 이렇게 명명.

 

사용중인 프로세스를 먼저 찾아야 하는데 아래 명령어로 process 를 찾을 수 있다.

ps aux


ps aux | grep python   // python으로 사용중인 프로세스를 찾는 경우

a // 모든 사용자의 프로세스를 출력함
u // 프로세스를 누가 사용하는지 보여줌
x // 모든 프로세스 목록을 보여줌

 

signal의 목록은 /usr/include/signal.h 에 정의되어 있으며 다음 명령으로도 전체 시그널 목록 확인 가능함.

$ 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

구문 : kill option <pid>

 

 

용례1 : kill -INT 123 or kill -2 123

kill 명령어 뒤에 시그널의 숫자 또는 SIG 를 뺀 이름(예: SIGINT 일 경우 INT)을 주고 프로세스 id 를 주면 해당 프로세스에 시그널을 보낼 수 있슴.

 

 

주의 : kill -9 를 쓰면 않된다.

개발자는 signal 종류 별로 handler 를 지정할 수 있는데 프로세스 종료의 의미로 사용하는 signal (INT, HUP, TERM 등)을 받으면 사용했던 리소스(파일, 소켓, DB 연결등)를  닫고 저장하는 cleanup 함수를 작성하고 이를 시그널 핸들러로 등록한다.

 

유닉스의 표준상 handler 를 등록할 수 없는 2개의 시그널이 있는데 바로 SIGKILL(9) 과  SIGSTOP(19) 이며 kill -9 명령어는 KILL signal 을 보내겠다는 의미.

 

 

kill -TERM PID  kill -INT PID 같이 종료를 의미하는 signal 을 여러 번 전송해 주어, cleanup 코드를 수행하고 종료하게 함.

 

 

용례2 : kill  `ps -ef | grep 프로세스이름 | grep -v grep | awk '{print $2}'`
   특정 이름의 프로세스 모두 종료하기.

 

 

용례3 : killall pyhon

   killall은 프로세스의 이름을 사용하여 모든 프로세스를 중지할 수 있음.

 

 

용례4 : killall -o 10m 프로세스이름

  10분 이상 ( -o 10m ) 동안 구동된 프로세스만 삭제

'Ubuntu > linux Command' 카테고리의 다른 글

Linux Command (rsync)  (0) 2021.08.16
Linux System Command (awk)  (0) 2021.08.16
Linux System Command (free)  (0) 2021.08.12
Linux System Command (top)  (0) 2021.08.12
Linux System Command (crontab)  (0) 2021.08.12