Linux

[리눅스] killall 명령어 완벽 가이드 사용법

인생아 2024. 10. 1. 23:10
반응형
 

리눅스 killall 명령어

killall 명령어는 이름 그대로 모든 프로세스를 종료하는 것이 아니라, 지정한 이름을 가진 모든 프로세스를 한 번에 종료하는 명령어입니다. 특정 프로세스 이름을 기준으로 여러 개의 동일한 프로세스가 실행 중일 때, killall을 사용하면 해당 이름을 가진 모든 프로세스를 쉽게 종료할 수 있습니다. kill 명령어가 프로세스 ID(PID)를 기준으로 특정 프로세스를 종료하는 것과 달리, killall프로세스 이름을 기준으로 작동한다는 차이가 있습니다.

killall 명령어 기본 사용법

killall [옵션] 프로세스명

여기서 프로세스명은 종료할 프로세스의 이름입니다. 기본적으로 SIGTERM(15) 시그널을 보내서 프로세스를 정상 종료합니다. 옵션을 통해 다른 시그널을 보낼 수도 있습니다.

프로세스 종료 예제

먼저, ps 명령어로 실행 중인 프로세스를 확인해봅니다.

user@linux:~/Documents$ ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 09:00 ?        00:00:02 /sbin/init
user      1234  1200  0 09:30 pts/0    00:00:00 bash
user      5678  1234  0 09:31 pts/0    00:00:01 python3
user      5679  1234  0 09:31 pts/0    00:00:01 python3

위의 출력에서 python3 프로세스가 두 개 실행 중인 것을 볼 수 있습니다. 이제 python3 프로세스를 모두 종료해보겠습니다.

user@linux:~/Documents$ killall python3

이 명령어는 python3이라는 이름을 가진 모든 프로세스를 종료합니다. 정상적으로 종료되었다면, ps 명령어를 다시 실행했을 때 python3 프로세스가 더 이상 존재하지 않게 됩니다.

특정 시그널로 종료

killall 명령어는 기본적으로 SIGTERM(15) 시그널을 보내지만, 옵션을 통해 SIGKILL(9) 등의 다른 시그널을 보낼 수 있습니다. 예를 들어, 응답하지 않는 python3 프로세스를 강제 종료하려면 다음과 같이 할 수 있습니다.

user@linux:~/Documents$ killall -9 python3

이 명령어는 SIGKILL(9) 시그널을 사용하여 강제로 python3 프로세스를 종료합니다.

프로세스가 없는 경우

killall 명령어는 종료하려는 프로세스가 실행 중이지 않으면 오류 메시지를 출력합니다.

user@linux:~/Documents$ killall python3
python3: no process found

이 메시지는 python3 프로세스가 실행 중이지 않을 때 나타납니다.

특정 사용자 소유의 프로세스 종료

특정 사용자가 실행한 프로세스를 종료할 수도 있습니다. -u 옵션을 사용하면 사용자를 지정할 수 있습니다.

user@linux:~/Documents$ killall -u user python3

이 명령어는 user가 실행한 python3 프로세스를 종료합니다.

타임아웃 설정

killall 명령어는 프로세스가 종료되기까지 기다릴 시간(초)을 설정할 수 있습니다. -w 옵션을 사용하면, 프로세스가 종료될 때까지 기다리는 기능을 제공합니다.

user@linux:~/Documents$ killall -w python3

이 명령어는 python3 프로세스가 종료될 때까지 대기합니다.

killall 명령어 주의 사항

killall 명령어를 사용할 때는 프로세스 이름을 정확히 확인해야 합니다. 잘못된 프로세스 이름을 입력하면 예기치 않게 중요한 시스템 프로세스나 다른 프로그램이 종료될 수 있으므로 주의가 필요합니다. 특히 여러 사용자나 중요한 시스템에서 작업할 때는 신중하게 사용하는 것이 좋습니다.

참고 사이트

반응형