리눅스 프로세스 모니터링을 위한 유용한 ‘ps Command’ 예제 30가지

ps (프로세스 상태)는 시스템에서 실행 중인 일부 프로세스에 관한 정보를 볼 수 있는 네이티브 Unix/Linux 유틸리티입니다. 이 정보는 /proc 파일 시스템의 가상 파일에서 읽습니다. 이것은 Linux 시스템에서의 프로세스 모니터링을 위한 시스템 관리의 중요한 도구 중 하나이며, Linux 시스템에서 무슨 일이 일어나고 있는지 이해하는 데 도움이 됩니다.

출력을 조작하기 위한 많은 옵션이 있지만, 실제로 일상적으로 사용되는 것은 소수입니다.

관련 글: 리눅스에서 프로세스에 관한 모든 것 [포괄적인 가이드]

이 문서에서는 리눅스 시스템에서 활성 프로세스를 모니터링하기 위한 ps 명령의 30가지 유용한 예제를 살펴볼 것입니다.

현재 쉘에서 모든 프로세스 나열하기

1. 인수 없이 ps 명령어를 실행하면 현재 쉘에 대한 프로세스가 표시됩니다.

$ ps 
List Current Running Processes

다양한 형식으로 모든 프로세스 출력하기

2. 일반 (Unix/Linux) 형식으로 리눅스 시스템의 모든 활성 프로세스 표시하기.

$ ps -A
OR
$ ps -e
List Processes in Standard Format

3. 모든 프로세스를 BSD 형식으로 표시하기.

$ ps au
OR
$ ps axu
List Processes in BSD Format

4.전체 포맷 목록을 실행하려면 -f 또는 -F 플래그를 추가하십시오.

$ ps -ef
OR
$ ps -eF
List Processes in Long List Format

사용자 실행 프로세스 표시

5.자신이 소유한 모든 프로세스를 선택할 수 있습니다 (ps 명령어의 실행자, 이 경우 root), 다음을 입력하십시오:

$ ps -x 

6.사용자의 프로세스를 실제 사용자 ID (RUID) 또는 이름별로 표시하려면 -U 플래그를 사용하십시오.

$ ps -fU tecmint
OR
$ ps -fu 1000
List User Processes by ID

7.사용자의 프로세스를 유효한 사용자 ID (EUID) 또는 이름별로 선택하려면 -u 옵션을 사용하십시오.

$ ps -fu tecmint
OR
$ ps -fu 1000

루트로 실행되는 모든 프로세스 인쇄 (실제 및 유효 ID)

8.아래 명령은 사용자 형식으로 root 사용자 권한으로 실행 중인 모든 프로세스를 볼 수 있도록 합니다 (실제 및 유효 ID).

$ ps -U root -u root 
Display Root User Running Processes

그룹 프로세스 표시

9.특정 그룹이 소유한 모든 프로세스를 나열하려면 (실제 그룹 ID (RGID) 또는 이름), 입력하십시오.

$ ps -fG apache
OR
$ ps -fG 48
Display Group Processes

10.유효 그룹 이름 (또는 세션)에 의해 소유된 모든 프로세스를 나열하려면 입력하십시오.

$ ps -fg apache

PID 및 PPID로 프로세스 표시

11.PID별 프로세스를 다음과 같이 나열할 수 있습니다.

$ ps -fp 1178
List Processes by PID

12.PPID로 프로세스를 선택하려면 입력하십시오.

$ ps -f --ppid 1154
List Process by PPID

13.PID 목록을 사용하여 선택하십시오.

$ ps -fp 2226,1154,1146
List Processes by PIDs

TTY로 프로세스 표시

14.tty로 프로세스를 선택하려면 다음과 같이 -t 플래그를 사용하십시오.

$ ps -t pts/0
$ ps -t pts/1
$ ps -ft tty1
List Processes by TTY

인쇄 프로세스 트리

15. 프로세스 트리는 시스템의 프로세스가 서로 어떻게 연결되어 있는지를 보여줍니다; 부모 프로세스가 종료된 프로세스는 init(또는 systemd)에 의해 채택됩니다.

$ ps -e --forest 
List Process Tree

16. 주어진 프로세스에 대한 프로세스 트리도 이와 같이 인쇄할 수 있습니다.

$ ps -f --forest -C sshd
OR
$ ps -ef --forest | grep -v grep | grep sshd 
List Tree View of Process

인쇄 프로세스 스레드

17. 프로세스의 모든 스레드를 인쇄하려면 -L 플래그를 사용하십시오. 이렇게 하면 LWP (가벼운 프로세스) 및 NLWP (가벼운 프로세스의 수) 열이 표시됩니다.

$ ps -fL -C httpd
List Process Threads

사용자 정의 출력 형식 지정

-o 또는 –format 옵션을 사용하면 ps가 아래에 표시된대로 사용자 정의 출력 형식을 작성할 수 있습니다.

18. 모든 형식 지정자를 나열하려면 L 플래그를 포함하십시오.

$ ps L

19. 아래 명령은 프로세스의 PID, PPID, 사용자 이름 및 명령을 볼 수 있게 합니다.

$ ps -eo pid,ppid,user,cmd
List Processes with Names

20. 아래는 파일 시스템 그룹, 좋은 값, 시작 시간 및 경과 시간을 보여주는 사용자 정의 출력 형식의 또 다른 예입니다.

$ ps -p 1154 -o pid,ppid,fgroup,ni,lstart,etime
List Process ID Information

21. PID를 사용하여 프로세스 이름을 찾으려면.

$ ps -p 1154 -o comm=
Find Process using PID

부모 및 자식 프로세스 표시

22. 이름으로 특정 프로세스를 선택하려면 -C 플래그를 사용하십시오. 이렇게 하면 해당 프로세스의 모든 하위 프로세스도 표시됩니다.

$ ps -C sshd
Find Parent-Child Process

23. 모든 인스턴스의 프로세스 PIDs를 찾아보세요. 표준 출력이나 파일에서 PIDs를 읽어야 하는 스크립트를 작성할 때 유용합니다.

$ ps -C httpd -o pid=
Find All Process PIDs

24. 프로세스의 실행 시간을 확인하세요.

$ ps -eo comm,etime,user | grep httpd

아래 출력은 HTTPD 서비스가 1시간 48분 17초 동안 실행 중임을 보여줍니다.

Find Process Uptime

리눅스 시스템 성능 문제 해결

시스템이 제대로 작동하지 않는 경우, 예를 들어 비정상적으로 느린 경우 다음과 같이 시스템 문제 해결을 수행할 수 있습니다.

26. 리눅스에서 메모리 및 CPU 사용량이 가장 높은 상위 실행 중인 프로세스를 찾으세요.

$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
OR
$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
Find Top Running Processes

27. 리눅스 프로세스/응답하지 않는 응용 프로그램 또는 높은 CPU 시간을 소비하는 모든 프로세스를 종료하세요.

먼저, 응답하지 않는 프로세스나 응용 프로그램의 PID를 찾으세요.

$ ps -A | grep -i stress

그런 다음 즉시 종료시키기 위해 kill 명령을 사용하세요.

$ kill -9 2583 2584
Find and Kill a Process

보안 정보 출력

28. 이와 같이 보안 컨텍스트(Specifically for SELinux)를 표시하세요.

$ ps -eM
OR
$ ps --context
Find SELinux Context

29.이 명령어를 사용하여 사용자 정의 형식으로 보안 정보를 표시할 수도 있습니다.

$ ps -eo  euser,ruser,suser,fuser,f,comm,label
List SELinux Context by Users

시청 도구를 사용하여 실시간 프로세스 모니터링 수행하기

30.ps는 정적 정보를 표시하므로, 아래 명령어와 같이 한 줄로 반복 출력되는 실시간 프로세스 모니터링을 수행하는 데 시청 도구를 활용할 수 있습니다(목적을 달성하기 위해 사용자 정의 ps 명령어를 지정하십시오).

$ watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head'
Real-Time Process Monitoring

중요: ps는 정적 정보만 표시하며, 자주 업데이트되는 출력을 보려면 htop; top, 그리고 glances와 같은 도구를 사용할 수 있습니다: 마지막 두 가지 도구는 실제로 Linux 시스템 성능 모니터링 도구입니다.

다음과 같은 관련 기사도 읽어보실 수 있습니다.

  1. Linux에서 PID 번호를 사용하여 프로세스 이름 찾는 방법
  2. 리눅스에서 최고 메모리 및 CPU 사용량을 기준으로 상위 실행 중인 프로세스 찾기
  3. A Guide to Kill, Pkill, and Killall Commands to Terminate a Process in Linux
  4. 리눅스에서 실행 중인 프로세스 찾고 종료하는 방법
  5. 터미널에서 백그라운드에서 Linux 명령을 시작하고 프로세스를 분리하는 방법

지금은 여기까지입니다. 만약 공유할 유용한 ps 명령어 예제(무엇을 하는지 설명하는 것을 잊지 마세요)가 있다면, 아래의 댓글 양식을 사용해 주세요.

Source:
https://www.tecmint.com/ps-command-examples-for-linux-process-monitoring/