Red Hat Enterprise Linux 에서 프로세스 모니터링하기

Red Hat Enterprise LinuxBeginner
지금 연습하기

소개

이 실습에서는 시스템 관리자 또는 개발자에게 필수적인 기술인 Linux 프로세스 모니터링 및 관리에 대한 실무 경험을 얻게 됩니다. pstop을 사용하여 프로세스 상태와 수명주기를 이해하고, 백그라운드 및 포그라운드 작업을 제어하며, kill, killall, pkill을 사용하여 프로세스를 효과적으로 종료하는 방법을 배우게 됩니다. 또한, uptimelscpu를 사용하여 시스템 부하와 CPU 사용량을 모니터링하고, top을 사용하여 프로세스 활동을 자세히 분석하는 방법을 탐색하게 됩니다. 이 실습을 통해 RHEL 시스템의 프로세스를 효율적으로 관리하고 시스템 상태를 유지하는 데 필요한 필수 도구와 지식을 갖추게 될 것입니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 93%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

ps 와 top 명령어로 프로세스 상태와 수명 주기 이해하기

이 단계에서는 Linux 프로세스 상태와 수명주기에 대해 학습합니다. 프로세스 상태를 이해하는 것은 시스템 리소스를 효과적으로 모니터링하고 관리하는 데 필수적입니다. pstop 명령어를 사용하여 프로세스와 그 상태를 관찰할 것입니다.

Linux 의 모든 프로세스는 현재 활동을 나타내는 상태를 가지고 있습니다. 이러한 상태는 커널에 의해 정의되며, 프로세스가 실행 중인지, 대기 중인지, 중지되었는지 또는 다른 조건인지를 나타냅니다.

먼저 ps 명령어를 사용하여 프로세스 상태를 살펴보겠습니다. ps 명령어는 현재 프로세스의 스냅샷을 보고합니다.

먼저 터미널을 엽니다. 데스크탑의 터미널 아이콘을 클릭하거나 Ctrl+Alt+T를 누르면 됩니다. 기본 작업 디렉토리가 ~/project입니다.

시스템에서 실행 중인 모든 프로세스, 즉 제어 터미널이 없는 프로세스까지 보려면 ps aux 명령어를 사용합니다. aux 옵션은 모든 사용자 (a) 가 소유한 프로세스, 제어 터미널이 없는 프로세스 (x) 를 표시하고 사용자 중심의 형식 (u) 을 보여줍니다.

ps aux

많은 프로세스 목록이 표시됩니다. 각 프로세스의 상태를 보여주는 STAT 열에 주의하십시오. 관찰할 수 있는 일반적인 상태는 다음과 같습니다.

  • R: 실행 중이거나 실행 가능 (CPU 에서 실행 중이거나 실행 대기)
  • S: 중단 가능한 대기 (이벤트 완료 대기)
  • D: 중단 불가능한 대기 (I/O 대기, 중단 불가)
  • T: 중지됨 (신호로 일시 중지)
  • Z: 좀비 (프로세스 종료되었지만 부모 프로세스가 종료 상태를 수집하지 않음)
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.2 171820 16140 ?        Ss   HH:MM   0:01 /usr/lib/systemd/systemd ...
root           2  0.0  0.0      0     0 ?        S    HH:MM   0:00 [kthreadd]
labex       3448  0.0  0.2 266904  3836 pts/0    R+   HH:MM   0:00 ps aux
...출력 생략...

다음으로 ps -ef 명령어를 사용해 보겠습니다. 이 명령어는 모든 프로세스 (e) 의 전체 목록 (f) 을 제공하며, 부모 프로세스 ID(PPID), CPU 사용률 (C), 시작 시간 (STIME), 명령어 (CMD) 와 같은 자세한 정보를 표시합니다.

ps -ef

이 출력은 프로세스 간의 부모 - 자식 관계를 보는 데 자주 사용되지만 명시적으로 트리 구조를 보여주지는 않습니다.

UID        PID  PPID  C STIME TTY          TIME CMD
root           1       0  0 HH:MM ?        00:00:01 /usr/lib/systemd/systemd ...
root           2       0  0 HH:MM ?        00:00:00 [kthreadd]
root           3       2  0 HH:MM ?        00:00:00 [rcu_gp]
...출력 생략...

프로세스 계층 구조를 시각화하려면 ps --forest 옵션을 사용할 수 있습니다. 이 옵션은 프로세스를 트리 형식으로 표시하여 어떤 프로세스가 다른 프로세스를 생성했는지 이해하기 쉽게 합니다.

ps --forest

이 명령어는 시스템에서 서로 다른 서비스와 애플리케이션이 어떻게 구조화되었는지 디버깅하고 이해하는 데 특히 유용합니다.

  PID TTY          TIME CMD
 2768 pts/0    00:00:00 bash
 5947 pts/0    00:00:00  \_ sleep 10000
 6377 pts/0    00:00:00  \_ ps --forest
...출력 생략...

이제 실행 중인 시스템의 실시간 동적인 보기를 제공하는 top 명령어를 살펴보겠습니다. 시스템 정보 요약과 현재 Linux 커널에서 관리 중인 프로세스 또는 스레드 목록을 표시합니다.

top 명령어를 실행합니다.

top

대화형 디스플레이가 표시됩니다. 상단 부분에는 시스템 정보 요약이 표시되며, 이는 시스템 시작 시간, 평균 부하, 작업 요약, CPU 통계 및 메모리 사용량을 포함합니다. 하단 부분에는 기본적으로 CPU 사용량 순으로 정렬된 개별 프로세스 목록이 표시됩니다.

top 출력에서 ps와 유사하게 프로세스 상태를 나타내는 S 열을 관찰할 수 있습니다. 또한 각 프로세스의 %CPU(CPU 사용량 백분율) 와 %MEM(메모리 사용량 백분율) 도 볼 수 있습니다.

top - HH:MM:SS up DD min,  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,    XXX.X used,    XXX.X buff/cache
MiB Swap:   XXXX.X total,   XXXX.X free,      X.X used.   XXXX.X avail Mem

PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
XXXX labex     20   0  XXXXXX   XXXX   XXXX R   X.X   X.X   0:00.0X top
...출력 생략...

top 명령어가 실행 중일 때 q를 누르면 터미널 프롬프트로 돌아갑니다.

이러한 명령어와 제공되는 정보를 이해하는 것은 Linux 시스템에서 프로세스를 모니터링하고 문제를 해결하는 데 필수적입니다.

백그라운드 및 포그라운드 작업 제어

이 단계에서는 쉘 세션 내에서 백그라운드 및 포그라운드 작업을 관리하는 방법을 배웁니다. 이는 효율적인 명령줄 사용을 위한 기본적인 기술로, 터미널을 점유하지 않고 장시간 실행되는 작업을 수행할 수 있도록 합니다.

쉘의 맥락에서 "작업"은 쉘이 관리하는 명령어 또는 명령어 파이프라인을 의미합니다. 작업을 백그라운드에서 실행하거나, 포그라운드로 가져오거나, 일시 중지할 수 있습니다.

먼저 백그라운드에서 간단한 명령어를 실행해 보겠습니다. sleep 명령어를 사용하여 지정된 시간 동안 대기합니다.

sleep 10000 (10000 초 대기) 를 백그라운드에서 실행하려면 명령어에 앰퍼샌드 (&) 를 추가합니다.

sleep 10000 &

Enter 키를 누르면 쉘은 즉시 프롬프트로 돌아가고 sleep 명령어는 백그라운드에서 실행됩니다. 작업 번호와 프로세스 ID(PID) 를 나타내는 출력이 표시됩니다.

[1] 5947

[1]은 현재 쉘 세션에서 작업 번호 1 을 나타내고, 5947sleep 프로세스의 PID 입니다.

쉘이 현재 관리하는 모든 작업 목록을 보려면 jobs 명령어를 사용합니다.

jobs

sleep 명령어가 실행 중인 백그라운드 작업으로 표시됩니다.

[1]+ Running    sleep 10000 &

[1] 옆의 +는 현재 작업임을 나타냅니다 (작업 번호를 지정하지 않으면 기본적으로 해당 작업에 영향을 줍니다).

이제 이 백그라운드 작업을 포그라운드로 가져옵니다. 이는 작업이 다시 터미널을 제어하게 됩니다. fg 명령어 뒤에 작업 번호 (앞에 %가 붙음) 를 사용합니다.

fg %1

sleep 10000 명령어가 이제 포그라운드에 있습니다. 터미널은 이 명령어에 의해 점유되고, 작업이 완료되거나 일시 중지될 때까지 프롬프트가 표시되지 않습니다.

sleep 10000

명령어가 포그라운드에서 실행 중일 때 Ctrl+Z를 눌러 백그라운드로 보내고 일시 중지할 수 있습니다. 이는 프로세스에 SIGTSTP 신호를 보냅니다.

이제 Ctrl+Z를 누릅니다.

^Z

작업이 중지되고 백그라운드로 이동되었음을 나타내는 출력이 표시됩니다.

[1]+  Stopped                 sleep 10000

이제 다시 jobs 명령어를 실행하면 sleep 명령어가 Stopped 상태임을 확인할 수 있습니다.

jobs
[1]+ Stopped                 sleep 10000

중지된 백그라운드 작업을 다시 시작하려면 bg 명령어 뒤에 작업 번호를 사용합니다. 이렇게 하면 작업이 백그라운드에서 다시 시작됩니다.

bg %1

작업이 다시 백그라운드에서 실행됩니다.

[1]+ sleep 10000 &

마지막으로 백그라운드 작업을 정리해 보겠습니다. 백그라운드 작업을 종료하려면 PID 와 함께 kill 명령어를 사용하거나, 포그라운드로 가져와서 종료할 수 있습니다 (예: Ctrl+C). 이제 포그라운드로 가져와 종료해 보겠습니다.

fg %1

sleep 10000이 포그라운드에 있으므로 Ctrl+C를 눌러 종료합니다. 이는 프로세스에 SIGINT 신호를 보냅니다.

^C

작업이 종료되었음을 나타내는 메시지가 표시됩니다.

[1]+  Terminated              sleep 10000

jobs 명령어를 다시 실행하면 더 이상 작업이 표시되지 않습니다.

jobs
(no output)

이 예제는 터미널에서 멀티태스킹에 필수적인 백그라운드 및 포그라운드 작업 관리의 기본적인 워크플로우를 보여줍니다.

kill, killall, pkill 명령어로 프로세스 종료하기

이 단계에서는 kill, killall, pkill 명령어를 사용하여 프로세스를 종료하는 방법을 배웁니다. 이러한 명령어는 시스템 리소스를 관리하고 잘못된 응용 프로그램을 중지하는 데 필수적입니다.

Linux 의 프로세스는 신호에 반응합니다. 신호는 프로세스에 전달되는 소프트웨어 인터럽트입니다. 서로 다른 신호는 프로세스를 종료하거나 일시 중지하거나 구성 파일을 다시 로드하는 등 서로 다른 의미를 가집니다.

먼저 몇 가지 기본적인 프로세스 관리 신호를 이해해 보겠습니다.

  • SIGTERM(15): kill 명령어가 기본적으로 보내는 신호입니다. "예의 바른" 종료 요청입니다. 프로세스는 이 신호를 받아 정리한 후 종료할 수 있습니다.
  • SIGKILL(9): 강제 종료를 위한 "차단 불가능한" 신호입니다. 프로세스는 이 신호를 무시하거나 처리할 수 없습니다. 마지막 수단으로 사용하십시오.
  • SIGHUP(1): 종료하지 않고 구성 파일을 다시 로드하도록 프로세스에 알리는 데 자주 사용됩니다.
  • SIGINT(2): Ctrl+C를 누르면 전달되며, 일반적으로 포그라운드 프로세스를 중단하는 데 사용됩니다.
  • SIGSTOP(19): 프로세스를 일시 중지합니다. 차단하거나 처리할 수 없습니다.
  • SIGCONT(18): 중지된 프로세스를 다시 시작합니다.

모든 사용 가능한 신호와 그 번호는 kill -l을 사용하여 나열할 수 있습니다.

kill -l

다음과 같은 신호 목록이 표시됩니다.

 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
...출력 생략...

kill 사용하기

kill 명령어는 프로세스 ID(PID) 로 식별되는 프로세스에 지정된 신호를 보냅니다.

프로세스 종료 연습을 위해 몇 가지 백그라운드 프로세스를 생성해 보겠습니다. sleep 명령어를 다시 사용합니다.

sleep 300 &
sleep 301 &
sleep 302 &

이제 jobs를 사용하여 작업 번호와 PID 를 확인합니다.

jobs
[1] 1234
[2] 1235
[3] 1236

(참고: PID 는 다를 수 있습니다.)

첫 번째 sleep 프로세스의 PID 를 찾아봅시다. ps aux | grep sleep을 사용하여 sleep 300과 관련된 PID 를 찾을 수 있습니다.

ps aux | grep sleep

다음과 유사한 출력이 표시됩니다. sleep 300의 PID 를 확인합니다. 예를 들어 PID 가 1234인 경우:

labex       1234  0.0  0.0   2200   680 pts/0    S    HH:MM   0:00 sleep 300
labex       1235  0.0  0.0   2200   680 pts/0    S    HH:MM   0:00 sleep 301
labex       1236  0.0  0.0   2200   680 pts/0    S    HH:MM   0:00 sleep 302
labex       1237  0.0  0.0   6000  1000 pts/0    S+   HH:MM   0:00 grep sleep

기본 SIGTERM 신호를 사용하여 sleep 300을 종료하려면 kill 명령어 뒤에 PID 를 사용합니다. 1234를 실제로 찾은 PID 로 바꿉니다.

kill 1234

[1]+ Terminated sleep 300와 같은 메시지가 표시될 수 있습니다. jobs 또는 ps aux | grep sleep을 사용하여 확인합니다.

jobs
[2]- Running    sleep 301 &
[3]+ Running    sleep 302 &

이제 SIGKILL을 사용하여 sleep 301을 강제 종료해 보겠습니다. PID(예: 1235) 를 찾아 kill -9 또는 kill -SIGKILL을 사용합니다.

kill -9 1235

[2]- Killed sleep 301와 같은 메시지가 표시될 것입니다. 다시 확인합니다.

jobs
[3]+ Running    sleep 302 &

killall 사용하기

killall 명령어는 PID 가 아닌 이름으로 프로세스를 종료합니다. 지정된 명령어 이름과 일치하는 모든 프로세스에 신호를 보냅니다.

몇 가지 더 많은 sleep 프로세스를 생성합니다.

sleep 303 &
sleep 304 &
sleep 305 &

실행 중인지 확인합니다.

jobs
[3] Running    sleep 302 &
[4] Running    sleep 303 &
[5] Running    sleep 304 &
[6] Running    sleep 305 &

이제 killall을 사용하여 모든 sleep 프로세스를 종료합니다. 기본적으로 killallSIGTERM을 보냅니다.

killall sleep

각 종료된 sleep 프로세스에 대한 메시지가 표시됩니다. 모든 sleep 프로세스가 종료되었는지 확인합니다.

jobs
(no output)

pkill 사용하기

pkill 명령어는 killall과 유사하지만 명령어 이름, 사용자 ID, 그룹 ID 및 제어 터미널에 대한 패턴 일치를 포함한 더욱 고급 선택 기준을 제공합니다. 특정 프로세스 집합을 대상으로 하는 데 매우 유용합니다.

pkill을 위해 몇 가지 새로운 sleep 프로세스를 생성합니다.

sleep 306 &
sleep 307 &
sleep 308 &

실행 중인지 확인합니다.

jobs
[1] Running    sleep 306 &
[2] Running    sleep 307 &
[3] Running    sleep 308 &

현재 사용자 (labex) 가 소유한 모든 sleep 프로세스를 종료하려면 pkill -u labex sleep을 사용합니다.

pkill -u labex sleep

이 명령어는 labex 사용자에게 속한 모든 sleep 프로세스를 종료합니다.

모든 sleep 프로세스가 종료되었는지 확인합니다.

jobs
(no output)

pkill을 패턴과 함께 사용할 수도 있습니다. 예를 들어 my_app_v1my_app_v2라는 프로세스가 있다면 pkill my_app으로 두 프로세스를 모두 종료할 수 있습니다.

이러한 명령어는 PID 로 단일 프로세스를 대상으로 하거나 이름 또는 다른 속성을 기반으로 여러 프로세스를 종료하는 등 유연한 방법으로 프로세스를 관리하고 종료하는 데 사용됩니다. kill -9 또는 SIGKILL을 사용할 때는 프로세스가 정리할 기회가 없으면 데이터 손실로 이어질 수 있으므로 항상 주의하십시오.

uptime 및 lscpu 명령어로 시스템 부하 및 CPU 사용량 모니터링

이 단계에서는 uptimelscpu 명령어를 사용하여 시스템의 평균 부하와 CPU 사용량을 모니터링하는 방법을 배웁니다. 이러한 지표를 이해하는 것은 시스템 성능을 평가하고 병목 현상을 식별하는 데 필수적입니다.

uptime으로 평균 부하 이해하기

uptime 명령어는 시스템 실행 시간, 로그인 사용자 수, 그리고 무엇보다 중요한 시스템 평균 부하에 대한 빠른 개요를 제공합니다. 평균 부하 (load average) 는 특정 시간 동안 실행 가능 또는 차단 해제 상태인 프로세스의 평균 수를 나타냅니다.

uptime 명령어를 실행합니다.

uptime

다음과 유사한 출력이 표시됩니다.

 HH:MM:SS up DD min,  X users,  load average: X.XX, X.XX, X.XX

출력을 자세히 살펴보겠습니다.

  • HH:MM:SS: 현재 시간
  • up DD min: 시스템 실행 시간 (uptime)
  • X users: 현재 로그인된 사용자 수
  • load average: X.XX, X.XX, X.XX: 이 세 수는 각각 지난 1 분, 5 분, 15 분 동안의 시스템 평균 부하를 나타냅니다.

단일 코어 CPU 에서 평균 부하가 1.00이면 CPU 가 완전히 사용되고 있습니다. 멀티 코어 CPU 에서 평균 부하가 CPU 코어 수와 같으면 시스템이 완전히 사용되고 있습니다. 예를 들어 4 코어 CPU 에서 평균 부하가 4.00이면 완전히 사용되고 있는 것입니다. 평균 부하가 CPU 코어 수를 지속적으로 초과하면 시스템이 과부하 상태이며 프로세스가 CPU 시간을 기다리고 있음을 나타냅니다.

lscpu로 CPU 코어 확인하기

평균 부하를 제대로 해석하려면 시스템의 논리 CPU 코어 수를 알아야 합니다. lscpu 명령어는 CPU 아키텍처에 대한 자세한 정보를 제공합니다.

lscpu 명령어를 실행합니다.

lscpu

상세한 출력이 표시됩니다. CPU(s): 라인을 찾아 사용 가능한 논리 CPU 의 총 수를 확인합니다. 또한 Core(s) per socket:Socket(s):를 통해 물리적 레이아웃을 이해하는 데 도움이 됩니다.

Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              4
On-line CPU(s) list: 0-3
Thread(s) per core:  2
Core(s) per socket:  2
Socket(s):           1
NUMA node(s):        1
...출력 생략...

위의 예에서 CPU(s): 4는 이 시스템에 4 개의 논리 CPU 코어가 있음을 나타냅니다.

평균 부하와 CPU 코어 해석하기

uptimelscpu의 정보를 결합해 보겠습니다. uptime 출력이 2.92, 4.48, 5.20의 평균 부하를 보이고 lscpu 출력이 CPU(s): 4라고 가정합니다.

CPU 당 평균 부하를 구하려면 각 평균 부하 수를 논리 CPU 총 수로 나눕니다.

  • 지난 1 분: 2.92 / 4 = 0.73
  • 지난 5 분: 4.48 / 4 = 1.12
  • 지난 15 분: 5.20 / 4 = 1.30

이 계산 결과를 바탕으로:

  • 지난 1 분 동안 CPU 는 용량의 약 73% 가 사용되었습니다.
  • 지난 5 분 동안 시스템은 약 12%(1.12 - 1.00 = 0.12) 과부하 상태였습니다. 이는 프로세스가 CPU 시간을 기다리고 있음을 의미합니다.
  • 지난 15 분 동안 시스템은 약 30%(1.30 - 1.00 = 0.30) 과부하 상태였습니다.

이 분석 결과, 지난 5 분과 15 분 동안 시스템이 상당한 부하를 받았지만 지난 1 분 동안 부하는 감소한 것으로 보입니다. 이러한 추세 분석은 시스템 상태를 이해하는 데 중요합니다.

uptimelscpu는 Linux 시스템의 전반적인 상태와 성능을 빠르게 평가하는 간단하지만 강력한 도구입니다.

top 명령어로 프로세스 활동 분석하기

이 단계에서는 top 명령어를 사용하여 프로세스 활동을 더 자세히 분석하는 방법을 배웁니다. top은 실시간 개요를 제공하지만, 프로세스 정렬, 필터링 및 관리를 위한 강력한 대화형 기능도 제공합니다.

이전 단계에서 top이 시스템의 동적인 보기를 제공한다는 것을 기억하세요. 다시 top을 시작해 보겠습니다.

top

익숙한 top 인터페이스가 나타납니다. 상단 부분은 시스템 전체 통계를 제공하고, 하단 부분은 프로세스 목록을 표시합니다.

top 열 이해하기

프로세스 목록의 기본 열을 살펴보겠습니다.

  • PID: 프로세스 ID
  • USER: 프로세스 소유자
  • PR: 프로세스 우선순위
  • NI: 프로세스의 Nice 값 (Nice 값이 낮을수록 우선순위가 높음)
  • VIRT: 프로세스가 사용하는 가상 메모리
  • RES: 프로세스가 사용하는 상주 메모리 (물리적 RAM)
  • SHR: 프로세스가 사용하는 공유 메모리
  • S: 프로세스 상태 (R=실행 중, S=대기 중, D=중단 불가능한 대기, T=중지됨, Z=좀비)
  • %CPU: 마지막 업데이트 이후 CPU 사용량 백분율
  • %MEM: 메모리 사용량 백분율 (RES / 전체 물리적 메모리)
  • TIME+: 프로세스 시작 이후 사용한 총 CPU 시간
  • COMMAND: 프로세스를 시작한 명령어 이름

top의 대화형 키 입력

top은 매우 대화형입니다. 다양한 키를 눌러 표시를 변경하고 프로세스와 상호 작용할 수 있습니다.

  1. 프로세스 정렬:

    • CPU 사용량 (%CPU) 으로 프로세스를 정렬하려면 Shift+P (대문자 P) 를 누릅니다. 이는 종종 기본값입니다.
    • 메모리 사용량 (%MEM) 으로 프로세스를 정렬하려면 Shift+M (대문자 M) 을 누릅니다.
    • TIME+으로 프로세스를 정렬하려면 Shift+T (대문자 T) 를 누릅니다.

    이제 메모리 사용량으로 정렬하려면 Shift+M을 눌러보세요. 프로세스 목록이 재정렬되는 것을 확인하세요. 그런 다음 CPU 사용량으로 정렬하려면 Shift+P를 누릅니다.

  2. 사용자별 필터링:

    • u (소문자 u) 를 누릅니다. top은 사용자 이름을 입력하라는 메시지를 표시합니다. labex를 입력하고 Enter 키를 누릅니다.
    • 이제 toplabex 사용자가 소유한 프로세스만 표시합니다. 자신의 프로세스에 집중하는 데 매우 유용합니다.
    • 다시 모든 사용자를 표시하려면 u를 누르고 사용자 이름을 입력하지 않고 Enter 키를 누릅니다.
  3. 업데이트 간격 변경:

    • 기본적으로 top은 3 초마다 업데이트합니다. 이 간격을 변경할 수 있습니다.
    • s (소문자 s) 를 누릅니다. top은 지연 시간을 입력하라는 메시지를 표시합니다. 1 (1 초) 을 입력하고 Enter 키를 누릅니다.
    • 표시가 더 자주 업데이트되는 것을 확인하세요.
    • 다시 3 초로 변경하려면 s를 다시 누르고 3을 입력합니다.
  4. 프로세스 종료:

    • top에서 직접 프로세스를 종료할 수 있습니다.
    • 먼저 새 터미널 탭이나 창에서 또는 현재 터미널에서 Ctrl+Z를 눌러 sleep 프로세스를 백그라운드로 보낸 다음 bg를 눌러 top을 백그라운드로 보내고 sleep 600 &를 실행한 다음 fg를 눌러 top을 다시 포그라운드로 가져옵니다.
    • 또는 새 터미널 탭 (예: 많은 터미널에서 Ctrl+Shift+T) 을 열고 sleep 600 &를 실행합니다.
    • sleep 프로세스가 실행되면 top 터미널로 돌아갑니다.
    • k (소문자 k) 를 누릅니다. top은 종료할 프로세스의 PID 를 입력하라는 메시지를 표시합니다.
    • top 목록에서 sleep 600 프로세스의 PID 를 찾습니다. 해당 PID 를 입력하고 Enter 키를 누릅니다.
    • top은 보낼 신호를 묻습니다. 기본값은 15(SIGTERM) 입니다. Enter 키를 눌러 SIGTERM을 보냅니다.
    • sleep 프로세스가 목록에서 사라져야 합니다. 그렇지 않으면 k를 다시 누르고 신호 9(SIGKILL) 를 보낼 수 있습니다.
  5. 프로세스 우선순위 변경:

    • Renicing 은 프로세스의 우선순위를 변경합니다. Nice 값이 낮을수록 우선순위가 높습니다.
    • r (소문자 r) 를 누릅니다. top은 PID 와 Nice 값 (예: 더 높은 우선순위를 위해 -10, 더 낮은 우선순위를 위해 10) 을 입력하라는 메시지를 표시합니다.
    • 이는 시스템 리소스를 관리하는 고급 기능입니다. 이 실습에서는 r을 누르고 Enter 키를 두 번 눌러 아무런 변경 없이 작업을 취소합니다.
  6. top 종료:

    • 작업이 끝나면 q (소문자 q) 를 눌러 top을 종료하고 터미널 프롬프트로 돌아갑니다.

top은 시스템 관리자와 사용자 모두에게 없어서는 안 될 도구입니다. 대화형 기능을 숙달하면 시스템 성능 문제와 프로세스 관리를 신속하고 효과적으로 진단할 수 있습니다.

요약

이 실습에서는 Linux 프로세스 관리의 기본 개념을 배웠습니다. pstop 명령어를 사용하여 프로세스 상태와 수명 주기를 이해하는 것으로 시작하여, 프로세스가 실행 중 (R), 중단 가능한 대기 (S), 중지됨 (T) 과 같은 상태 사이를 어떻게 전환하는지 관찰했습니다. 일반적인 프로세스 상태를 식별하고 ps auxps -ef의 출력을 해석하여 시스템 프로세스에 대한 통찰력을 얻는 연습을 했습니다.

또한 효율적인 터미널 사용에 필수적인 백그라운드 및 포그라운드 작업 제어 방법을 탐색했습니다. kill, killall, pkill과 같은 다양한 명령어를 사용하여 프로세스를 종료하는 방법을 숙달했으며, 정상적인 종료 또는 강제 종료에 대한 서로 다른 적용 사례를 이해했습니다. 마지막으로 uptimelscpu를 사용하여 시스템 부하와 CPU 사용량을 모니터링하고 top을 사용하여 자세한 프로세스 활동을 분석하여 시스템 성능과 자원 활용에 대한 종합적인 개요를 얻었습니다.