소개
이 랩에서는 kill, killall, 그리고 pkill 명령어를 사용하여 Linux 에서 프로세스를 종료하는 방법을 배우게 됩니다. 이 명령어들은 실행 중인 프로세스를 관리하는 데 필수적이며, 응답하지 않는 애플리케이션을 중지하거나 시스템 리소스를 확보하는 데 사용할 수 있습니다.
이 랩을 마치면 다음을 수행할 수 있습니다:
kill명령어를 사용하여 특정 프로세스를 종료합니다.killall명령어를 사용하여 이름으로 여러 프로세스를 종료합니다.killall의 대안으로pkill명령어를 사용합니다.
프로세스 ID 및 신호 이해
프로세스를 종료하기 전에 두 가지 핵심 개념, 즉 프로세스 ID (PID) 와 시그널을 이해하는 것이 중요합니다.
Ubuntu VM 에서 터미널을 엽니다. 기본적으로
/home/labex/project디렉토리에 있어야 합니다. 확실하지 않은 경우,pwd를 입력하고 Enter 키를 눌러 현재 디렉토리를 확인할 수 있습니다.간단한 백그라운드 프로세스를 실행하여 시작해 보겠습니다. 다음 명령을 입력합니다:
sleep 1000 &이 명령어는 1000 초 동안 sleep 하는 프로세스를 시작하고 백그라운드에서 실행합니다. 끝에 있는
&는 쉘에게 명령을 백그라운드에서 실행하도록 지시하여 터미널을 계속 사용할 수 있도록 합니다.실행 중인 프로세스를 보려면
ps명령어를 사용합니다:ps aux | grep sleep이 명령어는 실행 중인 모든 프로세스 (
ps aux) 를 표시한 다음 "sleep"을 포함하는 줄만 표시하도록 출력을 필터링합니다 (grep sleep).다음과 유사한 출력을 볼 수 있습니다:

두 번째 열의 숫자는 프로세스 ID (PID) 입니다. 나중에 이 값을 사용하여 프로세스를 종료합니다.
Linux 는 시그널을 사용하여 프로세스와 통신합니다. 프로세스를 종료하는 데 가장 일반적인 시그널은 다음과 같습니다:
- SIGTERM (15): 프로세스를 정상적으로 종료합니다. 이것은
kill명령어가 보내는 기본 시그널입니다. - SIGKILL (9): 프로세스를 강제로 종료합니다. SIGTERM 이 작동하지 않을 때 최후의 수단으로 사용해야 합니다.
- SIGTERM (15): 프로세스를 정상적으로 종료합니다. 이것은
이제 PID 와 시그널을 이해했으므로 kill 명령어를 사용할 준비가 되었습니다.
kill 명령어 사용
kill 명령어는 PID 로 식별되는 특정 프로세스에 시그널을 보내는 데 사용됩니다. 기본적으로 SIGTERM 시그널을 보내 프로세스가 정상적으로 종료되도록 요청합니다.
앞에서 시작한 sleep 프로세스를 종료해 보겠습니다. 먼저
ps명령어를 사용하여 PID 를 찾습니다:ps aux | grep sleepsleep 프로세스의 PID 를 적어두세요. 출력의 두 번째 열에 있는 숫자입니다.
이제
kill명령어를 사용하여 프로세스를 종료합니다:kill <PID><PID>를 기록해 둔 실제 프로세스 ID 로 바꿉니다. 예를 들어, PID 가 1234 인 경우kill 1234를 입력합니다.프로세스가 여전히 실행 중인지 확인합니다:
ps aux | grep sleepgrep명령 자체를 제외하고는 출력에서 더 이상 sleep 프로세스를 볼 수 없어야 합니다.
프로세스가 여전히 실행 중인 경우 (단순한 sleep 명령어의 경우 발생할 가능성은 낮지만, 더 복잡한 애플리케이션의 경우 가능합니다), 더 강력한 시그널을 사용할 수 있습니다:
kill -9 <PID>

이것은 SIGKILL 시그널을 보내 프로세스를 강제로 종료합니다. SIGKILL 은 프로세스가 정리할 수 없도록 하므로, 더 복잡한 애플리케이션에서 데이터 손실 또는 기타 문제를 일으킬 수 있으므로 주의해야 합니다.
killall 명령어 사용
killall 명령어를 사용하면 PID 를 사용하는 것보다 이름으로 프로세스를 종료할 수 있습니다. 특히 동일한 프로그램의 여러 인스턴스가 실행 중일 때 더욱 편리합니다.
여러 sleep 프로세스를 시작합니다:
sleep 2000 & sleep 2000 & sleep 2000 &이 명령어는 각각 2000 초 동안 백그라운드에서 실행되는 세 개의 별도 sleep 프로세스를 시작합니다.
프로세스가 실행 중인지 확인합니다:
ps aux | grep sleep세 개의 sleep 프로세스가 나열되어야 합니다.
이제
killall명령어를 사용하여 모든 sleep 프로세스를 종료합니다:sudo killall sleep여기서는
sudo를 사용합니다.killall은 다른 사용자 또는 시스템 프로세스에서 시작된 프로세스를 종료하기 위해 권한 상승이 필요할 수 있기 때문입니다. 비밀번호를 입력하라는 메시지가 표시될 수 있습니다.프로세스가 종료되었는지 확인합니다:
ps aux | grep sleepgrep명령 자체를 제외하고는 출력에서 더 이상 sleep 프로세스를 볼 수 없어야 합니다.
"Operation not permitted" 오류가 발생하면 특정 프로세스를 종료할 수 있는 권한이 없음을 의미합니다. 이 경우, 위에서와 같이 sudo를 사용하면 문제가 해결될 것입니다.
pkill 명령어 사용
pkill 명령어는 killall과 유사하게 이름으로 프로세스를 종료하는 또 다른 방법입니다. 부분적인 이름 일치를 기반으로 프로세스를 종료하려는 경우 특히 유용합니다.
몇 개의 sleep 프로세스를 더 시작합니다:
sleep 3000 & sleep 3000 & sleep 3000 &이것은 각각 3000 초 동안 백그라운드에서 실행되는 세 개의 sleep 프로세스를 더 시작합니다.
pkill명령어를 사용하여 이러한 프로세스를 종료합니다:sudo pkill sleepkillall과 마찬가지로, 모든 일치하는 프로세스를 종료하는 데 필요한 권한이 있는지 확인하기 위해sudo를 사용합니다.프로세스가 종료되었는지 확인합니다:
ps aux | grep sleepgrep명령 자체를 제외하고는 출력에서 sleep 프로세스를 볼 수 없어야 합니다.
pkill과 killall의 주요 차이점은 pkill이 부분적인 프로세스 이름 일치를 할 수 있다는 것입니다. 예를 들어, pkill fire는 firefox와 firebird 프로세스를 모두 종료합니다. 이는 강력할 수도 있고 위험할 수도 있으므로, pkill 명령을 실행하기 전에 항상 다시 확인하십시오.
실제 애플리케이션으로 연습
kill, killall, 그리고 pkill 사용법을 배웠으니, 실제 애플리케이션으로 연습해 보겠습니다. 예시로 Firefox 를 사용하며, 이 단계는 데스크톱 환경에서 연습해야 합니다.

Firefox 웹 브라우저를 시작합니다:
firefox &이 명령어는 Firefox 를 백그라운드에서 실행합니다. 데스크톱에서 Firefox 창이 열리는 것을 볼 수 있습니다.
ps명령어를 사용하여 Firefox 의 PID 를 찾습니다:ps aux | grep firefox주요 Firefox 프로세스의 PID 를 적어두십시오. 일반적으로 목록의 첫 번째 Firefox 프로세스입니다.
kill명령어를 사용하여 Firefox 를 종료합니다:kill <PID><PID>를 적어둔 Firefox 의 실제 프로세스 ID 로 바꿉니다.Firefox 가 닫히지 않으면 (일부 애플리케이션이 SIGTERM 신호를 잡는 경우 가능함), SIGKILL 신호를 사용해 봅니다:
kill -9 <PID>SIGKILL 은 애플리케이션이 상태를 저장하거나 제대로 정리할 수 없으므로 최후의 수단으로 사용해야 함을 기억하십시오.
또는
killall또는pkill을 사용할 수 있습니다:sudo killall firefox또는
sudo pkill firefox이 명령어는 모든 Firefox 프로세스를 한 번에 종료하며, 프로세스를 하나씩 종료하는 것보다 더 편리할 수 있습니다.
애플리케이션을 강제로 종료하면 데이터 손실이 발생할 수 있으므로, 가능하면 항상 정상적으로 애플리케이션을 닫는 것이 좋습니다. 이러한 명령어는 애플리케이션이 응답하지 않거나 시스템 리소스를 빠르게 확보해야 할 때 사용해야 합니다.
요약
축하합니다! Linux 에서 프로세스 종료에 대한 이 랩을 성공적으로 완료했습니다. 다음을 배우셨습니다:
kill명령어를 사용하여 PID 로 특정 프로세스를 종료하는 방법killall명령어를 사용하여 이름으로 여러 프로세스를 종료하는 방법killall의 대안으로pkill명령어를 사용하는 방법- 이러한 명령어를 간단한 백그라운드 프로세스와 실제 애플리케이션에 모두 적용하는 방법
이러한 명령어는 프로세스 관리를 위한 강력한 도구이지만, 신중하게 사용하십시오. 중요한 시스템 프로세스를 종료하면 시스템 불안정으로 이어질 수 있습니다. 이러한 명령어를 사용하기 전에 항상 종료하려는 프로세스를 확인하십시오.
Linux 여정을 계속 진행하면서, 이러한 프로세스 관리 기술은 원활하게 실행되는 시스템을 유지하고 문제를 해결하는 데 매우 유용하다는 것을 알게 될 것입니다. Linux 에서 프로세스 관리에 익숙해지도록 이러한 명령어를 계속 연습하십시오!



