리눅스 killall 명령어 완벽 가이드: 프로세스 이름으로 한 번에 종료하기
리눅스 시스템을 운영하다 보면 응답이 없는 프로그램을 강제로 종료해야 할 때가 있습니다. 보통 ps 명령어로 PID(프로세스 ID)를 찾고 kill 명령어를 사용하지만, 동일한 프로그램이 여러 개 실행 중이라면 일일이 PID를 입력하는 것이 매우 번거롭습니다.
이때 유용하게 사용할 수 있는 것이 바로 killall 명령어입니다. PID가 아닌 '프로세스 이름'을 기준으로 관련 프로세스를 일괄 처리할 수 있어 시스템 관리자의 시간을 획기적으로 단축해 줍니다. 오늘은 killall의 기초 사용법부터 고급 옵션까지 심도 있게 다루어 보겠습니다.
1. killall 명령어의 기본 개념과 특징
killall은 지정한 이름을 가진 모든 프로세스에 신호(Signal)를 보냅니다. 별도의 시그널을 지정하지 않으면 기본적으로 SIGTERM (15)을 보내 안전한 종료를 유도합니다.
- 이름 기반 종료: PID를 몰라도 프로세스 이름만 알면 즉시 실행 가능합니다.
- 일괄 처리: 동일한 바이너리로 실행된 모든 인스턴스를 한 번에 종료합니다.
- 정밀한 제어: 사용자별, 프로세스 생성 시간별 필터링이 가능합니다.
2. 자주 사용하는 핵심 옵션 및 용법
단순히 프로세스를 죽이는 것 외에도 안전한 관리를 위한 다양한 옵션이 존재합니다.
| 옵션 | 설명 | 사용 예시 |
|---|---|---|
| -i | 종료 전 사용자에게 대화형 확인 과정을 거칩니다. | killall -i firefox |
| -I | 프로세스 이름의 대소문자를 구분하지 않습니다. | killall -I FIREFOX |
| -9 | SIGKILL 시그널을 보내 강제로 즉시 종료합니다. | killall -9 nginx |
| -u | 특정 사용자가 소유한 프로세스만 종료합니다. | killall -u bong user_proc |
| -o | 지정된 시간 이전에 시작된 프로세스만 종료합니다. | killall -o 1h chrome |
3. kill vs killall: 어떤 상황에 써야 할까?
두 명령어는 목적은 같지만 타겟팅 방식이 다릅니다. 시스템 환경에 맞는 적절한 선택이 필요합니다.
| 비교 항목 | kill | killall |
|---|---|---|
| 식별 대상 | PID (숫자) | 프로세스 명 (문자열) |
| 작업 범위 | 단일 프로세스 중심 | 동일 이름 전체 그룹 |
| 안전성 | 높음 (특정 대상만 정밀 조준) | 보통 (실수로 다른 프로세스 종료 위험) |
4. 실무 활용 팁: 주의사항
주의: 루트 권한(sudo)으로 killall을 사용할 때는 매우 신중해야 합니다. 시스템 핵심 프로세스 이름을 잘못 입력하면 전체 시스템이 다운될 수 있습니다.
특히 솔라리스(Solaris) 같은 일부 유닉스 시스템에서 killall은 '모든' 프로세스를 종료하는 명령어로 동작할 수 있으므로, 리눅스 외의 환경에서는 반드시 매뉴얼을 확인하시기 바랍니다.
결론: 효율적인 프로세스 관리를 위하여
killall 명령어는 다수의 프로세스를 한 번에 제어해야 하는 개발자 및 시스템 엔지니어에게 필수적인 도구입니다. 오늘 배운 -i(확인), -u(사용자 지정) 옵션을 적절히 조합하면 더욱 안전하고 스마트한 리눅스 환경을 구축할 수 있습니다.
지금 바로 터미널을 열고 killall --version을 입력해 설치 여부를 확인해 보세요!
더 많은 리눅스 꿀팁이 궁금하시다면 블로그의 다른 글도 참고해 주시기 바랍니다.