린아저씨의 잡학사전

안녕하세요. 린아저씨 입니다.

오늘은 리눅스를 다루면서 현재 실행 중인 프로세스를 종료하거나, 프로세스가 먹통이 되어 강제 종료해야하는 경우에 사용할 수 있는 다양한 방법의 종료 방법에 대해서 알아보도록 하겠습니다.

 

1. 현재 실행 중이 프로세스 확인하기

$ ps -ef

UID        PID      PPID     C     STIME     TTY      TIME         CMD
lina       13123      0      0     Apr16      ?     00:01:05    /usr/bin/test.sh
root         1        0      0     Apr16      ?     00:00:00    /usr/bin/vmtoolsd
systemd+     1        0      0     Apr16      ?     00:00:00    /lib/systemd/systemd-networkd
root         1        0      0     Apr16      ?     00:11:00    /usr/sbin/cron -f
root         1        0      0     Apr16      ?     00:00:00    /usr/sbin/rsyslogd -n

.........

ps -ef 명령어를 사용하면 다음과 같이 현재 떠있는 모든 프로세스를 확인할 수 있습니다.

ps -ef 각 컬럼명에 대해 간단히 설명을 드리면

  • UID : 프로세스 사용자 아이디
  • PID : 프로세스 아이디
  • PPID : 부모 프로세스 아이디
  • C : 단기간 CPU  사용률
  • STIME : 프로세스가 시작된 시간
  • TTY : 프로세스와 연결된 터미널 포트
  • TIME : 프로세스에서 사용한 CPU 시간
  • CMD : 명령어

 

2. ps 명령어 이용해서 특정 프로세스 종료하기

$ kill -9 `ps -ef | grep 'PROCESS_NAME' | awk '{print $2}'`

kill 명령어를 함께 사용해서 현재 떠있는 특정 프로세스를 종료할 수 있습니다.

  • kill -9 : 프로세스를 중지시키겠다.
  • grep 'PROCESS_NAME' : 프로세스 이름을 검색
  • awk '{print $2}' : 두번째 컬럼값만 가져오겠다. 즉 PID, 프로세스 아이디만 가져오겠다

3. 좀 더 간단하게 pgrep을 이용해서 프로세스 종료하기

$ pgrep -f test.sh
13123

$ kill -9 `pgrep -f test.sh`

pgrep을 이용하면 2번에서와 같이 긴 명령어를 입력하지 않아도 간단하게 프로세스 아이디를 알아낼 수 있습니다. 따라서 pgrep을 이용하면 좀 더 간단한 명령어로 프로세스 종료가 가능합니다.

 

4. 매개변수를 참고해서 프로세스 종료하기

$ pkill -9 -e test

-9는 kill과 동일하게 프로세스에 kill 신호를 보내라는 옵션이며, -e 는 output 출력 옵션이다. 이렇게 하면 명령행 전체를 참고해서 프로세스 이름을 찾고 일치하는 프로세스의 PID를 참조하여 프로세를 종료시킨다.

 

 

이상으로 몇가지 방법으로 리눅스에 떠있는 프로세스를 종료하는 방법에 대해서 알아보았습니다. 이 중에서 가장 편하고 기억에 잘 남는 방법을 택해서 이용하시면 됩니다! 끝!

공유하기

facebook twitter kakaoTalk kakaostory naver band