Linux 에서 프로세스 실행 여부 확인 방법

LinuxBeginner
지금 연습하기

소개

이 랩에서는 프로세스를 관리하고 모니터링하기 위한 기본적인 Linux 기술을 배우게 됩니다. ps aux 명령어를 사용하여 시스템에서 실행 중인 모든 프로세스를 나열하는 방법을 탐구할 것입니다. 이 명령어는 사용자, PID, CPU 및 메모리 사용량과 같은 자세한 정보를 포함하는 현재 프로세스의 스냅샷을 제공합니다.

또한, pgrep 명령어를 사용하여 특정 프로세스를 효율적으로 찾는 방법을 배우고, top 명령어를 활용하여 실시간 프로세스 활동 및 리소스 소비에 대한 통찰력을 얻을 것입니다. 이러한 기술은 시스템 관리, 문제 해결 및 시스템 성능 이해에 필수적입니다.

ps aux 로 실행 중인 프로세스 목록 확인

이 단계에서는 ps 명령어를 사용하여 Linux 시스템에서 현재 실행 중인 프로세스를 보는 방법을 배우게 됩니다. 프로세스는 단순히 실행 중인 프로그램입니다. 프로세스를 나열하고 식별하는 방법을 이해하는 것은 Linux 시스템 관리 및 문제 해결의 기본적인 기술입니다.

ps 명령어는 현재 프로세스의 스냅샷을 보고하는 데 사용됩니다. 특정 옵션과 함께 사용하면 많은 자세한 정보를 제공할 수 있습니다.

ps 명령어를 aux 옵션과 함께 사용해 보겠습니다. 이러한 옵션은 시스템에서 실행 중인 모든 프로세스를 사용자 친화적인 형식으로 표시하기 위해 일반적으로 함께 사용됩니다.

  • a: 모든 프로세스를 표시합니다.
  • u: 프로세스의 사용자 및 소유자를 표시합니다.
  • x: 제어 터미널이 없는 프로세스를 표시합니다 (백그라운드 프로세스를 확인하는 데 유용합니다).

터미널이 아직 열려 있지 않다면 열어주세요. 기본적으로 ~/project 디렉토리에 있어야 합니다.

다음 명령을 입력하고 Enter 키를 누르세요:

ps aux

다음과 유사한 긴 프로세스 목록이 표시됩니다 (정확한 출력은 다를 수 있습니다):

USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.1  16840  9880 ?        Ss   Jul23   0:01 /sbin/init
root           2  0.0  0.0      0     0 ?        S    Jul23   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   Jul23   0:00 [rcu_gp]
...
labex      12345  0.1  0.5 123456 54321 pts/0    Ss   HH:MM   0:00 /usr/bin/zsh
labex      12367  0.0  0.1  21000  5000 pts/0    R+   HH:MM   0:00 ps aux
...

표시되는 열을 자세히 살펴보겠습니다:

  • USER: 프로세스를 소유한 사용자.
  • PID: 프로세스 ID (Process ID), 각 실행 중인 프로세스에 대한 고유 번호.
  • %CPU: 프로세스가 사용하는 CPU 시간의 백분율.
  • %MEM: 프로세스가 사용하는 물리적 메모리의 백분율.
  • VSZ: 가상 집합 크기 (Virtual Set Size), 프로세스에서 사용하는 총 가상 메모리 양.
  • RSS: 상주 집합 크기 (Resident Set Size), 프로세스에서 사용하는 물리적 메모리 양.
  • TTY: 프로세스에 대한 제어 터미널 (있는 경우). ?는 제어 터미널이 없음을 의미합니다.
  • STAT: 프로세스 상태 (예: 실행 중인 R, 대기 중인 S, 좀비 Z).
  • START: 프로세스가 시작된 시간.
  • TIME: 프로세스가 사용한 누적 CPU 시간.
  • COMMAND: 프로세스를 시작한 명령어.

이 출력을 스크롤하는 것은 압도적일 수 있습니다. 다음 단계에서는 이 출력을 필터링하여 특정 프로세스를 찾는 방법을 배우게 됩니다.

계속을 클릭하여 진행하세요.

pgrep 을 사용하여 특정 프로세스 찾기

이전 단계에서 ps aux가 많은 출력을 생성할 수 있다는 것을 보았습니다. 종종 특정 프로세스만 찾고 싶을 것입니다. pgrep 명령어는 이러한 목적으로 설계되었습니다. 프로세스 이름을 기반으로 프로세스를 검색하고 해당 프로세스 ID (PID) 를 반환합니다.

pgrep의 기본 구문은 pgrep [options] pattern입니다. pattern은 일반적으로 찾고 있는 프로세스의 이름입니다.

터미널에서 현재 사용하고 있는 쉘인 zsh 프로세스의 PID 를 찾아보겠습니다.

다음 명령을 입력하고 Enter 키를 누르세요:

pgrep zsh

터미널에 하나 이상의 숫자가 출력되는 것을 볼 수 있습니다. 이것은 실행 중인 zsh 프로세스의 PID 입니다.

12345

(정확한 숫자는 다를 것입니다).

pgrep에서 찾은 PID 와 관련된 전체 명령을 보려면 ps 명령어와 결합할 수 있습니다. ps-p 옵션을 사용하면 PID 를 지정할 수 있습니다.

zsh 프로세스의 전체 명령을 PID 를 사용하여 찾아보겠습니다. 먼저, 현재 PID 를 얻기 위해 pgrep zsh를 다시 실행합니다. 이 예에서는 PID 가 12345라고 가정합니다 (실제로 얻은 PID 로 12345를 바꾸세요).

이제 PID 다음에 ps -p를 사용합니다:

ps -p 12345

다음과 유사한 출력을 볼 수 있습니다:

    PID TTY          TIME CMD
  12345 pts/0    00:00:00 zsh

이는 PID 12345zsh 명령에 해당함을 확인합니다.

pgrep은 프로세스 이름을 알고 있을 때 해당 프로세스의 PID 를 찾는 빠른 방법입니다. 이는 프로세스를 종료하는 것과 같은 다른 명령에 PID 가 필요할 때 특히 유용합니다 (향후 랩에서 배우게 됩니다).

다음 단계로 이동하려면 계속을 클릭하세요.

top 명령어로 프로세스 상세 정보 모니터링

이 단계에서는 시스템에서 실행 중인 프로세스의 동적이고 실시간 보기를 제공하는 top 명령어에 대해 배우게 됩니다. ps aux가 스냅샷을 제공하는 반면, top은 지속적으로 업데이트되어 어떤 프로세스가 가장 많은 CPU 와 메모리를 사용하고 있는지 보여줍니다.

top 명령어는 시스템 성능을 모니터링하고 과도한 리소스를 소비할 수 있는 프로세스를 식별하는 데 매우 유용합니다.

터미널에 다음 명령을 입력하고 Enter 키를 누르세요:

top

터미널이 변경되어 끊임없이 업데이트되는 프로세스 목록을 표시합니다. 출력은 다음과 유사합니다:

top - HH:MM:SS up  X days, HH:MM,  X users,  load average: X.XX, X.XX, X.XX
Tasks: XXX total,   X running, XXX sleeping,   X stopped,   X zombie
%Cpu(s):  X.X us,  X.X sy,  X.X ni, XX.X id,  X.X wa,  X.X hi,  X.X si,  X.X st
MiB Mem :  XXXX.X total,  XXXX.X free,  XXXX.X used,  XXX.X buff/cache
MiB Swap:  XXXX.X total,  XXXX.X free,  XXXX.X used. XXXX.X avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  12345 labex     20   0  123456  54321  32100 S   0.1   0.5   0:00.10 zsh
  12367 labex     20   0   21000   5000   3000 R   0.0   0.1   0:00.05 top
  ...

top 출력의 주요 영역을 살펴보겠습니다:

  • 요약 영역 (Top): 이 섹션은 다음을 포함한 시스템 요약 정보를 표시합니다.

    • 현재 시간 및 시스템 가동 시간.
    • 로그인한 사용자 수.
    • 부하 평균 (지난 1, 5, 15 분 동안 실행을 대기 중인 프로세스의 평균 수).
    • 총 작업 수 (프로세스) 및 해당 상태 (실행 중, 대기 중, 중지됨, 좀비).
    • CPU 사용량 분석 (사용자, 시스템, 유휴 등).
    • 메모리 사용량 (총, 사용 가능, 사용 중, 버퍼/캐시).
    • 스왑 공간 사용량.
  • 프로세스 목록 영역 (Bottom): 이 섹션은 CPU 사용량별로 기본적으로 정렬된 개별 프로세스를 나열합니다. 열은 ps aux와 유사하지만 top은 실시간으로 업데이트합니다. 주요 열은 다음과 같습니다:

    • PID: 프로세스 ID.
    • USER: 프로세스 소유자.
    • %CPU: CPU 사용량 백분율.
    • %MEM: 메모리 사용량 백분율.
    • COMMAND: 명령 이름.

top이 실행되는 동안 다양한 키를 사용하여 상호 작용할 수 있습니다:

  • q를 눌러 top을 종료합니다.
  • M을 눌러 메모리 사용량별로 프로세스 목록을 정렬합니다.
  • P를 눌러 CPU 사용량별로 프로세스 목록을 정렬합니다 (이것이 기본값입니다).
  • k를 눌러 프로세스를 종료합니다 (PID 를 묻는 메시지가 표시됩니다). 주의하세요!

잠시 프로세스를 관찰하고 CPU 및 메모리 사용량이 어떻게 변경되는지 살펴보세요. 디스플레이를 업데이트하기 위해 CPU 를 적극적으로 사용하고 있기 때문에 top 프로세스 자체가 목록 상단 근처에 표시되는 것을 볼 수 있습니다.

top 탐색을 마치면 q를 눌러 종료하고 일반 터미널 프롬프트로 돌아갑니다.

이 단계를 완료하고 랩을 완료하려면 계속을 클릭하세요.

요약

이 랩에서는 Linux 에서 프로세스가 실행 중인지 확인하는 기본적인 기술을 배웠습니다. 시스템에서 실행 중인 모든 프로세스를 나열하기 위해 ps aux 명령을 사용하여 시작했으며, 프로세스 활동의 스냅샷을 제공하는 USER, PID, %CPU 및 %MEM 과 같은 다양한 열을 이해했습니다.

그런 다음 이름 또는 기타 속성을 기반으로 프로세스를 검색하고 해당 프로세스 ID (PID) 를 반환하는 pgrep 명령을 사용하여 특정 프로세스를 효율적으로 찾는 방법을 탐구했습니다. 마지막으로, 시스템 리소스 사용량 및 개별 프로세스 통계의 동적 보기를 제공하여 CPU 및 메모리 소비를 관찰할 수 있는 top 명령을 사용하여 실시간으로 프로세스 세부 정보를 모니터링하는 방법을 배웠습니다.