리눅스에서 프로세스를 관리하는 것은 처음에는 새로운 시스템 관리자에게 어려워 보일 수 있습니다. 그러나 조금의 설명과 데모를 통해 ps
와 kill
과 같은 명령행 도구를 사용하여 리눅스 프로세스를 찾고 종료하는 방법을 배울 수 있습니다.
이 글에서는 실행 중인 프로세스와 오류가 있는 프로세스를 찾는 명령어, 실행 중인 프로세스를 종료하는 명령어, 백그라운드 프로세스를 찾는 명령어 등 리눅스 운영 체제에서 모든 것에 대해 자세히 알아보게 됩니다.
글의 끝에는 리눅스 명령행에서 프로세스 식별 번호 (PID)를 기반으로 프로세스를 관리하는 방법을 마치 전문가처럼 할 수 있게 될 것입니다. 리눅스에서 프로세스 관리 명령어에 대해 모두 알아보려면 계속 읽어보세요!
전제 조건
이 글은 리눅스에서 프로세스를 관리하는 방법에 대한 설명입니다. 직접 실습하려면 다음이 필요합니다:
- A Linux host, which can be a virtual machine or a physical machine.
- PowerShell 예제를 시도하려면 리눅스 호스트에 PowerShell 7.1.1을 설치해야 합니다.
- A non-root user account. While root access is not required, there will be an example where the root user can kill the running process of another user.
사용할 리눅스 배포판은 선택에 따라 다릅니다. 이 글은 우분투 20.04 LTS를 기반으로 작성되었지만, 명령어는 리눅스 운영 체제에서 표준입니다.
시작할 준비가 되었습니까? 좋습니다, 시작해 봅시다.
리눅스에서 프로세스 관리하기
가끔 Linux 시스템에서 실행 중인 프로세스를 중지해야할 상황에 직면할 수 있습니다. 예를 들어, 일정에 따라 실행되는 bash 스크립트가 있을 수 있습니다. 이 bash 스크립트는 cron 작업(Linux 프로세스 스케줄러)을 통해 다른 사용자로 실행되도록 구성되어 있습니다.
이 스크립트는 때로는 스크립트의 실패로 이어지는 잘못된 프로세스를 생성할 수 있습니다. 시스템을 재부팅하거나 스크립트를 중지하지 않고 이러한 잘못된 프로세스를 어떻게 종료할 수 있을까요?
다음 섹션에서는 Linux 시스템에서 프로세스를 찾고 종료 또는 kill하는 데 사용되는 명령어를 안내합니다. 각 섹션은 이전 섹션을 기반으로 구성됩니다. Linux에 기본으로 포함된 ps
, top
, pgrep
, kill
, pkill
명령어에 대해 알아보게 될 것입니다.
보너스로 Linux 기본 명령어가 마음에 들지 않는다면 PowerShell 동등한 명령어인 Get-Process
와 Stop-Process
도 포함되어 있습니다.
프로세스 찾기 도구
프로세스를 종료하기 전에 대상이 되는 올바른 프로세스를 찾아야 합니다. 고유한 PID를 사용하여 정확한 대상을 설정할 수 있습니다. 종료할 올바른 프로세스를 찾는 방법에 대해 계속 읽어보세요.
ps
명령어를 사용하여 프로세스 정보 표시하기
프로세스 상태 또는 ps
명령은 Linux 시스템에서 실행 중인 프로세스에 관련된 정보를 표시합니다. ps
를 사용하여 실행 중인 프로세스와 백그라운드 프로세스를 식별할 수 있습니다.
ps
명령은 기본적으로 현재 사용자의 유효 사용자 식별자(EUID)에 대한 모든 프로세스를 표시합니다. 아래에 표시된대로 ps
명령을 실행하면 사용자가 종료할 수 있는 모든 실행 중인 프로세스를 반환합니다.

bkindle
.top
명령을 사용하여 확장된 프로세스 정보 찾기
실행 중인 프로세스와 시스템 메트릭에 대한 지속적으로 업데이트되는 정보를 찾으려는 경우 top
명령을 사용할 수 있습니다. top
명령은 일정한 간격으로 화면에 프로세스 정보를 업데이트합니다.
top
명령을 실행하면 PID뿐만 아니라 CPU 및 메모리 사용률, Nice 값 (CPU 스케줄링 프로세스 우선순위) 및 Linux 커널에서 설정한 프로세스 우선순위(PR)도 포함된 프로세스 세부 정보가 표시됩니다.
새로운 또는 경험있는 시스템 관리자에게 top
명령은 주요 시스템 리소스와 프로세스를 관리하는 주요 도구입니다. 아래에 표시된대로 top
명령 출력은 ps
명령보다 더 많은 프로세스 정보와 전체 시스템 메트릭을 표시합니다.

top
command on Ubuntu Desktop 20.04 LTS showing all running PID’s.htop
은 top
의 향상된 버전으로, 컬러화된 터미널 출력 등 다양한 개선 사항이 포함되어 있습니다.
어떤 경우에는 프로세스가 사용하는 메모리 또는 CPU 자원을 검사하고 싶을 수도 있습니다. 이 경우, 아래에 나와있는 것처럼 top
의 p
스위치를 사용할 수 있습니다.

아마도 특정 사용자의 모든 실행 중인 프로세스를 표시해야 할 수도 있습니다. top
명령은 특정 사용자의 프로세스만 표시하기 위한 u
스위치를 제공합니다. 아래 예제에서는 사용자 ID가 bkindle
과 일치하는 PID만 표시됩니다.

top
command displaying only processes for the user bkindle
.pgrep
명령을 사용하여 특정 프로세스 PID 찾기
pgrep
는 원래 Solaris 명령이었으나 Linux에서 사용하기 위해 이식되었습니다. grep
명령의 검색 기능과 ps
의 프로세스 관리 기능을 결합한 pgrep
은 정확한 대상 프로세스를 찾는 데 유연성을 제공합니다.
ps
는 더 많은 정보를 표시하지만, pgrep
은 반환된 프로세스의 PID만 반환하도록 설계되었습니다. pgrep
은 다양한 사용 가능한 검색 매개변수를 사용하여 프로세스를 찾는 데 도움이 됩니다. 다음 예제에서는 pgrep
가 vmtoolsd
와 일치하는 프로세스를 검색하는 것을 보여줍니다.

pgrep
to obtain all PIDs associated with vmtoolsd
.동일하게, u
스위치를 사용하여 특정 사용자와 관련된 프로세스만 검색하도록 사용자 ID를 지정합니다. 아래에 표시된대로, 사용자 bkindle
과 vmtoolsd
프로세스에 대해서만 단일 PID가 반환됩니다.

vmtoolsd
process associated with the user bkindle
.Linux에서 PowerShell의 Get-Process
를 사용하여 프로세스 찾기
전형적인 Linux 명령은 훌륭하게 작동하지만, PowerShell이 Linux 프로세스도 관리할 수 있는 것을 알고 계셨나요? Get-Process
cmdlet은 Linux의 ps
명령과 유사하게 작동하며 프로세스 정보를 반환합니다. 예를 들어, 현재 사용자인 bkindle
에 의해 실행 중인 모든 프로세스를 찾아야 할 수도 있습니다. 아래에 표시된대로 사용자 bkindle
의 모든 PID( Get-Process
에서의 ID로 레이블링됨)를 찾습니다.

Get-Process
cmdlet.관련 정보: PowerShell Where-Object를 사용하여 모든 것 필터링하는 방법
다양한 프로세스를 찾는 방법을 배웠으니, 이어서 Linux에서 프로세스를 종료하거나 강제 종료하는 모든 방법을 알아보세요!
Linux에서 Kill 명령을 사용하여 프로세스 종료하기
이전 섹션에서, 기본 Linux 및 PowerShell 명령을 사용하여 kill 신호를 보낼 프로세스의 PID를 찾는 방법을 배웠습니다. 다음 섹션에서는 kill
및 pkill
프로그램, 관련 신호 및 명령줄 스위치를 사용하는 방법에 대해 설명합니다.
Linux 신호 및 프로세스 관리
신호는 Linux가 운영 체제에서 실행 중인 프로세스와 통신하는 방법입니다. kill
명령이 프로세스를 종료하는 데 사용하는 주요 신호는 다음과 같습니다:
- 1 (SIGHUP) – 대화형 프로그램을 종료하고 데몬 (백그라운드 서비스)이 사용하는 구성 파일을 다시 읽도록 합니다.
- 9 (SIGKILL) – 정상적인 종료 작업을 수행하지 않고 프로세스를 강제로 종료합니다.
- 15 (SIGTERM) – 프로세스가 정상적으로 종료되도록 허용하며, 종료 시 열려 있는 파일을 닫습니다. 이는 kill 명령을 사용할 때 숫자를 지정하지 않았을 때 사용되는 기본 신호입니다.
이 문서는 프로세스를 종료하는 데 사용되는 주요 신호 세 가지에만 초점을 맞추었지만, 총 64개의 사용 가능한 신호가 있습니다. 신호 및 해당 번호 목록을 얻으려면
kill -l
을 사용하세요.
이제 프로세스를 종료하는 데 사용되는 주요 신호 세 가지를 이해했으니, 다음 섹션에서 프로세스를 종료하는 방법을 알아보세요.
프로세스 종료를 위해 kill
명령 사용하기
다음 예제에서는 kill
명령을 사용합니다. 잠시 PowerShell 인스턴스인 pwsh
를 실행하고 할당된 PID가 22687이라고 가정해 보겠습니다. 이 프로세스를 종료하는 한 가지 방법은 아래에 표시된 대로 진행합니다.
kill
명령에서 사용되는pwsh
프로세스의 PID를 확인하기 위해pgrep pwsh
를 사용합니다.kill -s TERM 22687
명령을 사용하여pwsh
프로세스를 정상적으로 종료하세요.TERM
명령은 15(SIGTERM) 신호에 해당하며,kill
명령의s
매개변수를 사용하여 지정합니다.top
,ps
, 또는pgrep
중 선택하여 PID가 더 이상 나열되지 않는지 확인하세요.
아래는 Ubuntu 20.04 LTS bash 터미널에서 위 과정의 예시입니다.

kill
and associated commands to terminate the pwsh
process.
killall
명령은 PID가 아닌 이름을 기반으로 모든 프로세스를 종료합니다. 이 명령은 부주의하게 사용할 경우 매우 파괴적일 수 있으므로 사용하는 경우i
옵션을 사용하여 명령이 확인을 요청하도록 하세요.
pkill
을 사용하여 이름으로 프로세스 종료하기
kill
명령은 프로세스 ID만 작동한다는 점에 주목할 수 있습니다. 이로 인해 프로세스를 종료하는 것은 복잡한 다단계 과정이 될 수 있습니다. procps 및 procps-ng 패키지에 포함된 pkill
명령은 검색된 이름을 기반으로 프로세스를 종료합니다.
pkill
명령은 기능적으로 pgrep
프로그램을 래퍼로 사용합니다. pkill
명령은 터미널에 PID만 나열하는 대신에 각 프로세스에 지정된 신호를 보냅니다. pkill
은 kill
과 다르게 프로세스의 이름만 사용할 수 있습니다.
pkill
명령은 Ubuntu 20.04 LTS에서는 기본적으로 사용할 수 없습니다. 애플리케이션을 다운로드하고 설치해야 합니다. 다음 명령을 실행하여 설치하세요:sudo apt install mcollective-plugins-process -y
.
pkill
을 사용하여 프로세스를 종료하려면 다음 단계를 수행하세요:
ps
를 사용하여 nano 애플리케이션(명령줄 텍스트 편집기)이 현재 실행 중인지 확인합니다. 이 단계는 옵션입니다. 프로세스를 종료하기 전에 안전을 확인하기 위한 절차입니다.pkill -9 nano
를 사용하여 강제로 nano 애플리케이션을 종료합니다.
아래는 Ubuntu 20.04 LTS bash 터미널에서 위의 과정의 예시입니다.

pkill
command to forcefully terminate the nano process.top
명령을 사용하여 실행 중인 프로세스를 확인하고 특정 프로세스를 종료할 수 있습니다.
k
키를 눌러 주어진 프로세스를 종료할 수 있는 대화형 프롬프트가 표시됩니다.
아래의 예시에서 top
명령을 실행하고 k를 누릅니다. 종료하려는 PID를 입력하고 Enter 키를 눌러 PID를 즉시 종료합니다.

top
to specify a process to terminate using the k keystroke.다음으로 PowerShell의 Stop-Process
명령을 사용하는 Linux 명령어의 또 다른 대안을 배워보세요!
PowerShell의 Stop-Process
명령을 사용하여 프로세스를 종료하는 방법
리눅스 기본 명령어가 마음에 들지 않는다면, PowerShell을 사용해보세요! kill
명령어와 마찬가지로, Stop-Process
cmdlet을 사용하여 프로세스를 종료할 수 있습니다. 다시 말해, PowerShell pwsh
프로세스를 실행하고 있다고 가정해보세요.
Get-Process -ProcessName 'pwsh'
를 사용하여 PID를 찾고 종료할 PID를 확인하세요.Stop-Process -Id 29992,30014
를 사용하여 반환된 여러 프로세스를 종료하세요.Get-Process -ProcessName 'pwsh'
를 사용하여 PID인29992
와30014
가 더 이상 나열되지 않는지 확인하세요. 이는 해당 프로세스들이 종료되었음을 의미합니다.
Get-Process
와kill
메서드를 사용하여 하나 또는 여러 프로세스를 종료할 수도 있습니다:(Get-Process -Id [PID]).Kill()
또는(Get-Process -Id [PID1,2,3,4]).Kill()
.
ProcessName
매개변수를 사용할 때 주의하세요. 이 매개변수를 사용하면killall
명령과 유사하게 동작하며, 지정된 이름과 일치하는 모든 프로세스를 종료합니다.
아래는 Ubuntu 20.04 LTS bash 터미널에서 위의 프로세스 예시입니다.

Stop-Process
to kill processes in Linux.다음 단계
이제 Linux에서 프로세스를 찾고 종료하는 다양한 방법을 알게 되었어야 합니다! 다음 도전에서는 SSH 연결을 통해 원격으로 프로세스를 종료하거나 컨테이너에서 실행 중인 프로세스를 종료하는 방법을 시도해보세요.