본문 바로가기

리눅스/명령어

[리눅스] kill

- kill -

 

1. 기능

 

 현재 수행중인 프로세서에게 시그널을 보낸다.

 

 보통 KILL이 무어냐 물어보면 프로세서를 죽이는데 사용한다고 대답을 하는데 그건 물론 오답입니다.

 

 KILL 명령어는 실행중인 프로세서에 시그널을 보낸다고 표현해주세요.

 

 

2. 문법

 

 # kill [ -signal ID ] PID

 

 # kill  -l

 

3. 옵션 - tupe pattern 형식이 pattern인 것.

 

 - signal ID :

 

  프로세서에게 보낼 시그널을 지정한다. 시그널은 번호로 지정되 수도 있고 시그널 이름으로 지정될 수도 있다.

 

 - l : 시그널 종류를 나열한다. 시그널의 종류는 시그널 버호 순서대로 이름으로 나열한다.

 

4. 사용방법 및 정보

 

시그널의 종류를 지정하지 않으면 프로세서를 종료기키는 의미로 디폴트 시그널 ID 15번을 보내게 된다.

 

# 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로 생성된다.

 

 

자 보시는 바와같이 여러종류의 SIGNAL ID가 보입니다.

 

가장 간단히 많이 쓰는것은(물론 저의 경우입니다.)

 

9번입니다.

 

9. SIGKILL(KILL) : 죽이기. 이 시그널은 잡히지 않는다. 라고  되어있죠??

 

제가 주변에 리눅스가 설치된곳이 없어서 예문은 글로 대신하겠습니다.(스샷은 나중에 올릴께요)

 

동영상 스샷 필요없이 ps 와 kill 명령어로 죽일 수 있습니다.

ps aux 라고 치면 현재 실행중인 프로세서들이 뜨는데

여기서 죽이고싶은 프로세서의 PID (즉 왼쪽에서 두번째 칸에 있는 숫자).

를 알아내 kill -9 PID 라고 치면 됩니다.

예를들어

 

ps aux 의 명령어를 치면

 

USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
root           1       0.0      0.1     1576   536   ?           S     Feb19    0:01      init [2]
root           2       0.0      0.0        0      0    ?           S      Feb19   0:00   [migration/0]
root           3       0.0      0.0        0      0    ?          SN     Feb19   0:00    [ksoftirqd/0]

 

다음과 같은 화면이 나옵니다.

 

위에 보시면 눈에 확들어 오시죠??

 

네 PID가 올라 와있습니다. 프로세서의 간단한정보가 궁금하시다면(COMMAND참조 유추하시길)

KILL -9 1 이라고 치면? 당연히 1번 프로세서가 죽겠죠?

 

물론 프로세서의 PID는 1자리수가 아닙니다.

 

백단위도 천단위도 있지요

 

( 천단위가 많습니다. -   ㅡ.,ㅡ; 당연히 백단위보다 천단위가 숫자 종류가 많다고 하시면 할말없음;;)

 

pstree -p 하시면

 

saslauthd(2056)-+-saslauthd(2058)
        |                 |-saslauthd(2059)
        |                 |-saslauthd(2060)
        |                 `-saslauthd(2061)
        |-sendmail(15819)-+-sendmail(20751)
        |                 `-sendmail(20908

 

이런식의 출력에서 pid만 확인하셔서 마찬가지 -9옵션으로 킬해주셔도 되겠습니다.

 

pid만 알면 얼마든지 킬이 가능하니까요.....

 

원격에서 들어온 사용자도 킬이 가능하겠죠?

 

터미널이 열리고 그 사용자가 들어와서 실행시킨 프로세서는 좀 달리보이겠죠?

 

USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
root           1       0.0      0.1     1576   536   ?           S     Feb19    0:01      init [2]
root           2       0.0      0.0        0      0    ?           S      Feb19   0:00   [migration/0]
root           3       0.0      0.0        0      0    ?          SN     Feb19   0:00    [ksoftirqd/0]

 

센스 쟁이들 @.,@ 벌써 눈치채셨군요 사용자가 누구인지만 봐도 바로 답이 나오는거죠

 

오랫만에 글올리는데 별도움이 안되는 내용만 주저리주저리 죄송합니다. +_ +;;

 

다음에 올릴때는 알찬 내용으로 돌아 오겠습니다. @.,@