gbmin's Tech Notes

서버 구축 및 유지보수, 클라우드 컴퓨팅, 네트워크 보안, IT 분야 기술 노트. :)

Tech Notes/Tools & Command

[Linux command] ps 명령어 프로세스 모니터링

gbmin 2023. 7. 10. 14:58

리눅스 시스템에서 프로세스란, 프로그램의 시행단위를 말한다. 각각의 프로세스는 자체적인 메모리 공간을 가지며, 이를 통해 자신의 코드를 실행하고 데이터를 저장한다. 각 프로세스는 고유의 프로세스 ID (PID)를 갖게 되며, 이는 시스템 내에서 프로세스를 구분하고 관리하는 데 사용된다. 시스템 엔지니어로서 프로세스 관리는 시스템의 안정성과 효율성을 유지하기 위해 꼭 필요한 작업이다. 각 프로세스가 시스템 자원을 어떻게 사용하고 있는지 알아야 적절하게 할당하고, 필요 없는 프로세스를 종료함으로써 시스템의 성능을 최적화할 수 있다. 리눅스 시스템에서 프로세스를 모니터링하는 명령어 중 가장 널리 사용하는 ps라는 명령어다. ps 명령어는 현재 시스템에서 실행 중인 프로세스의 상태를 보여주는 데 사용되는 도구로, 이를 통해 시스템의 상태를 파악하고 관리할 수 있다.


[목차]

1. ps 명령어 기본 사용법

2. ps 주요 옵션

3. 옵션 조합 및 출력 예제


 

1. ps 명령어 기본 사용법

ps 명령어는 process status 의 약자로, 현재 시스템에서 동작 중인 프로세스들의 상태를 보여주는 명령어다.

# ps
  PID TTY          TIME CMD
21037 pts/0    00:00:00 bash
21052 pts/0    00:00:00 ps

 

항목 내용

  • PID: 프로세스 ID
  • TTY: 프로세스가 연결된 터미널
  • TIME: CPU 사용 시간
  • CMD: 실행된 명령어를 나타 낸다.

 

 

2. ps 주요 옵션

  • -e, --every: 시스템의 모든 프로세스를 보여줌.
  • -f 혹은 --full: 프로세스에 대한 전체 정보를 보여줌.
  • -u 혹은 --user: 사용자를 기준으로 프로세스를 보여줌. (특정 사용자의 프로세스만 확인)
  • -A 혹은 --all: 모든 프로세스를 보여줌.
  • -x : 터미널에 연결되지 않은 프로세스도 보여줌.
  • -eF : 시스템의 모든 프로세스에 대한 전체 정보를 보여줌.
  • -l : 프로세스의 자세한 정보를 보여줌.
  • -p 혹은 --pid: 특정 PID를 가진 프로세스의 정보를 보여줌.
  • -o : 원하는 정보만을 출력하도록 커스텀. 이때, 출력할 정보를 옵션 뒤에 공백으로 구분해 작성함.

 

 

3. 옵션 조합 및 출력 예제

원하는 프로세스에 대한 항목만 출력

# ps -o pid,uname,comm
  PID USER     COMMAND
21037 root     bash
21140 root     ps

 

원하는 프로세스의  PID 값만 출력

# ps -p 18527
  PID TTY          TIME CMD
18527 ?        00:00:14 httpd

 

프로세스 상세 정보와 모든 프로세스 정보 출력

# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
~ 생략
root         1     0  0 Jun28 ?        00:00:14 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root       630     1  0 Jun28 ?        00:00:00 /sbin/auditd
root       653     1  0 Jun28 ?        00:00:19 /usr/sbin/irqbalance --foreground
polkitd    655     1  0 Jun28 ?        00:00:00 /usr/lib/polkit-1/polkitd --no-debug
root       657     1  0 Jun28 ?        00:00:04 /usr/lib/systemd/systemd-logind
dbus       658     1  0 Jun28 ?        00:00:08 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
root     18527     1  0 Jul05 ?        00:00:14 /usr/sbin/httpd -DFOREGROUND
root     19509     2  0 Jul07 ?        00:00:00 [kworker/5:2]
apache   20372 18527  0 Jul09 ?        00:00:02 /usr/sbin/httpd -DFOREGROUND
apache   20374 18527  0 Jul09 ?        00:00:02 /usr/sbin/httpd -DFOREGROUND
apache   20375 18527  0 Jul09 ?        00:00:03 /usr/sbin/httpd -DFOREGROUND
apache   20376 18527  0 Jul09 ?        00:00:02 /usr/sbin/httpd -DFOREGROUND
apache   20457 18527  0 Jul09 ?        00:00:04 /usr/sbin/httpd -DFOREGROUND
apache   20458 18527  0 Jul09 ?        00:00:02 /usr/sbin/httpd -DFOREGROUND
apache   20459 18527  0 Jul09 ?        00:00:02 /usr/sbin/httpd -DFOREGROUND
apache   20462 18527  0 Jul09 ?        00:00:02 /usr/sbin/httpd -DFOREGROUND
apache   20463 18527  0 Jul09 ?        00:00:02 /usr/sbin/httpd -DFOREGROUND
root     20644     2  0 Jul09 ?        00:00:00 [kworker/3:0]
root     20676     2  0 Jul09 ?        00:00:00 [kworker/1:0]
apache   20711 18527  0 Jul09 ?        00:00:02 /usr/sbin/httpd -DFOREGROUND
root     21035   891  0 13:58 ?        00:00:00 sshd: root@pts/0
root     21037 21035  0 13:58 pts/0    00:00:00 -bash
root     21091 21037  0 14:13 pts/0    00:00:00 ps -ef

 

apache 유저의 프로세스만 확인

# ps -f -u apache
UID        PID  PPID  C STIME TTY          TIME CMD
apache   20372 18527  0 Jul09 ?        00:00:02 /usr/sbin/httpd -DFOREGROUND
apache   20374 18527  0 Jul09 ?        00:00:02 /usr/sbin/httpd -DFOREGROUND
apache   20375 18527  0 Jul09 ?        00:00:03 /usr/sbin/httpd -DFOREGROUND
apache   20376 18527  0 Jul09 ?        00:00:02 /usr/sbin/httpd -DFOREGROUND
apache   20457 18527  0 Jul09 ?        00:00:04 /usr/sbin/httpd -DFOREGROUND
apache   20458 18527  0 Jul09 ?        00:00:02 /usr/sbin/httpd -DFOREGROUND
apache   20459 18527  0 Jul09 ?        00:00:02 /usr/sbin/httpd -DFOREGROUND
apache   20462 18527  0 Jul09 ?        00:00:02 /usr/sbin/httpd -DFOREGROUND
apache   20463 18527  0 Jul09 ?        00:00:02 /usr/sbin/httpd -DFOREGROUND
apache   20711 18527  0 Jul09 ?        00:00:02 /usr/sbin/httpd -DFOREGROUND

 

시스템에서 실행 중인 모든 프로세스를 상세하게 출력

# ps aux
~생략
root       503  0.0  0.0  39428  5040 ?        Ss   Jun28   0:01 /usr/lib/systemd/systemd-journald
root       508  0.0  0.0      0     0 ?        S<   Jun28   0:00 [kworker/1:1H]
root       525  0.0  0.0 190376  1324 ?        Ss   Jun28   0:00 /usr/sbin/lvmetad -f
root       535  0.0  0.0  45676  2044 ?        Ss   Jun28   0:00 /usr/lib/systemd/systemd-udevd
root       611  0.0  0.0      0     0 ?        S    Jun28   0:00 [jbd2/vda1-8]
root       612  0.0  0.0      0     0 ?        S<   Jun28   0:00 [ext4-rsv-conver]
root       630  0.0  0.0  55532   844 ?        S<sl Jun28   0:00 /sbin/auditd
root       653  0.0  0.0  21608  1236 ?        Ss   Jun28   0:19 /usr/sbin/irqbalance --foreground
polkitd    655  0.0  0.2 612340 12264 ?        Ssl  Jun28   0:00 /usr/lib/polkit-1/polkitd --no-debug
root       657  0.0  0.0  26384  1648 ?        Ss   Jun28   0:04 /usr/lib/systemd/systemd-logind
dbus       658  0.0  0.0  58116  2308 ?        Ss   Jun28   0:08 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
root       664  0.0  0.0 126392  1564 ?        Ss   Jun28   0:00 /usr/sbin/crond -n
root       685  0.0  0.0 110208   828 tty1     Ss+  Jun28   0:00 /sbin/agetty --noclear tty1 linux
root       891  0.0  0.0 113000  4296 ?        Ss   Jun28   0:00 /usr/sbin/sshd -D
root       893  0.0  0.2 574284 17344 ?        Ssl  Jun28   1:01 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root       894  0.0  0.0 216400  5036 ?        Ssl  Jun28   0:35 /usr/sbin/rsyslogd -n
root       896  0.1  0.2 608932 16908 ?        Ssl  Jun28  25:00 /usr/bin/python2 -s /usr/bin/fail2ban-server -xf start
root      1148  0.0  0.0      0     0 ?        S    Jun28   0:01 [kworker/0:2]
mysql     1395  0.0  5.1 1753872 312504 ?      Ssl  Jun28   2:38 /usr/sbin/mariadbd
root     13155  0.0  0.0      0     0 ?        S    Jul03   0:03 [kworker/1:1]
root     14301  0.0  0.0      0     0 ?        S    Jul03   0:00 [kworker/2:0]
root     18527  0.0  0.2 434292 17872 ?        Ss   Jul05   0:14 /usr/sbin/httpd -DFOREGROUND
root     19509  0.0  0.0      0     0 ?        R    Jul07   0:00 [kworker/5:2]
root     20018  0.0  0.0      0     0 ?        S    Jul08   0:00 [kworker/5:0]
apache   20372  0.0  0.3 549636 24408 ?        S    Jul09   0:02 /usr/sbin/httpd -DFOREGROUND
apache   20374  0.0  0.3 546772 21928 ?        S    Jul09   0:02 /usr/sbin/httpd -DFOREGROUND
apache   20375  0.0  0.3 549636 24420 ?        S    Jul09   0:03 /usr/sbin/httpd -DFOREGROUND
apache   20376  0.0  0.3 549636 24408 ?        S    Jul09   0:02 /usr/sbin/httpd -DFOREGROUND
apache   20457  0.0  0.2 542708 17864 ?        S    Jul09   0:04 /usr/sbin/httpd -DFOREGROUND
apache   20458  0.0  0.3 547532 22688 ?        S    Jul09   0:02 /usr/sbin/httpd -DFOREGROUND
apache   20459  0.0  0.3 547332 22568 ?        S    Jul09   0:02 /usr/sbin/httpd -DFOREGROUND
apache   20462  0.0  0.3 549092 23988 ?        S    Jul09   0:02 /usr/sbin/httpd -DFOREGROUND
apache   20463  0.0  0.3 549592 24400 ?        S    Jul09   0:02 /usr/sbin/httpd -DFOREGROUND
root     20644  0.0  0.0      0     0 ?        S    Jul09   0:00 [kworker/3:0]
root     20676  0.0  0.0      0     0 ?        S    Jul09   0:00 [kworker/1:0]
apache   20711  0.0  0.3 549608 24404 ?        S    Jul09   0:02 /usr/sbin/httpd -DFOREGROUND
root     20785  0.0  0.0      0     0 ?        S    Jul09   0:00 [kworker/3:2]
root     21035  0.0  0.1 159740  6436 ?        Ds   13:58   0:00 sshd: root@pts/0
root     21037  0.0  0.0 115684  2096 pts/0    Ss   13:58   0:00 -bash
root     21098  0.0  0.0      0     0 ?        S    14:16   0:00 [kworker/2:1]
root     21134  0.0  0.0 155452  1824 pts/0    R+   14:16   0:00 ps aux

프로세스는 운영체제에서 프로그램의 실행 단위를 의미하며, 어떤 작업이 진행 중인지, 어떤 리소스를 사용하고 있는지 등을 파악하는 것은 시스템 엔지니어로서 중요한 작업이다. 시스템에 부하나 성능 저하가 발생되었을 때는 top 명령어를 통해 리소스를 많이 사용하는 프로세스나 부하를 주는 프로세스를 확인하고 ps 명령어를 통해 부모 프로세스 등을 확인해 동작 중인 상태를 파악하는 방식으로 진행하고 조치가 된다면 시스템 관리에 많은 도움이 될 수 있다.

 

[Tech Notes/Tools & Command] - [Linux command] vmstat 명령어를 통한 시스템 성능 모니터링

 

[Linux command] vmstat 명령어를 통한 시스템 성능 모니터링

vmstat 은 Virtual Memory Statistics의 줄임말로, Linux와 같은 Unix 계열 시스템에서 가상 메모리 통계를 보여주는 명령어다. Linux 서버 환경에서는 높은 트래픽 처리와 복잡한 연산 수행을 위해 리소스 사

gbminnote.com

[Tech Notes/Tools & Command] - [Linux command] top 명령어를 통한 시스템 성능 모니터링

 

[Linux command] top 명령어를 통한 시스템 성능 모니터링

리눅스 시스템을 관리할 때 가장 기본적이고 많이 사용되는 명령어 중 하나이다. top 은 시스템 성능을 실시간으로 시스템을 확인하고 분석할 수 있는 모니터링 할 수 있는 도구이다. top 명령어

gbminnote.com