본문 바로가기

리눅스

ps 명령어

728x90

ps 명령어

ps 명령어는 현재 실행 중인 프로세스 정보를 보여주는 리눅스/유닉스 명령어입니다. ps 명령어는 사용자, 프로세스 ID, CPU 사용량, 메모리 사용량 등 다양한 정보를 제공합니다.

free, kill, pkill, pgrep, pmap, ps, pwdx, Skill, slabtop, snice, sysctl, tload, top, uptime, vmstat, w 및 watch가 포함되어 있습니다.

procps 패키지 설치

  • CentOS
sudo yum install procps-ng
  • Ubuntu
sudo apt install procps-ng

기본 구문

ps [옵션]

주요 옵션

  • -e : 시스템 전체의 모든 프로세스 출력.
  • -f : Full-format 출력. 상세한 정보를 보여줍니다.
  • -l : Long-format 출력. 상세한 정보와 함께 보여줍니다.
  • -u 사용자 : 특정 사용자의 프로세스만 출력.
  • -a : 모든 사용자의 프로세스 출력.
  • -x : 데몬 프로세스까지 모두 출력.
  • -p 프로세스ID : 특정 프로세스 ID의 정보 출력.

사용 예시

1. 모든 프로세스 출력

ps aux
$ ps aux | head -n 5
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.1 100392 11484 ?        Ss   17:26   0:01 /sbin/init
root           2  0.0  0.0      0     0 ?        S    17:26   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   17:26   0:00 [rcu_gp]
root           4  0.0  0.0      0     0 ?        I<   17:26   0:00 [rcu_par_gp]

2. 현재 사용자의 프로세스 출력

ps u
$ ps u | head -n 5
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         751  0.0  0.0   6172  1072 tty1     Ss+  17:26   0:00 /sbin/agetty -o -p -- \u --noclear tty1 linux
root        1199  0.0  0.0  11496  5584 pts/0    S+   21:21   0:00 sudo su -
root        1200  0.0  0.0  11496   884 pts/1    Ss   21:21   0:00 sudo su -
root        1201  0.0  0.0  10216  4468 pts/1    S    21:21   0:00 su -
728x90

3. 특정 프로세스 ID의 정보 출력

ps -p 1234
$ ps -p 1
    PID TTY          TIME CMD
      1 ?        00:00:01 systemd

4. 특정 사용자의 프로세스 출력

ps -u username
$ ps -u root | head -n 5
    PID TTY          TIME CMD
      1 ?        00:00:01 systemd
      2 ?        00:00:00 kthreadd
      3 ?        00:00:00 rcu_gp
      4 ?        00:00:00 rcu_par_gp

5. 전체 시스템의 프로세스 트리 출력

pstree
$ pstree
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─agetty
        ├─cron
        ├─dbus-daemon
        ├─irqbalance───{irqbalance}
        ├─multipathd───6*[{multipathd}]
        ├─mysqld───36*[{mysqld}]
        ├─named───9*[{named}]
        ├─networkd-dispat
        ├─nginx───4*[nginx]
        ├─polkitd───2*[{polkitd}]
        ├─rsyslogd───3*[{rsyslogd}]
        ├─sshd───sshd───sshd───bash───sudo───sudo───su───bash───pstree
        ├─systemd───(sd-pam)
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-network
        ├─systemd-timesyn───{systemd-timesyn}
        ├─systemd-udevd
        ├─udisksd───4*[{udisksd}]
        └─unattended-upgr───{unattended-upgr}

6. 프로세스 정보를 실시간으로 갱신

watch ps aux
Every 2.0s: ps aux                                                 node1: Wed Nov 15 21:38:54 2023

USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.1 100392 11484 ?        Ss   17:26   0:01 /sbin/init
root           2  0.0  0.0      0     0 ?        S    17:26   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   17:26   0:00 [rcu_gp]
root           4  0.0  0.0      0     0 ?        I<   17:26   0:00 [rcu_par_gp]
root           5  0.0  0.0      0     0 ?        I<   17:26   0:00 [slub_flushwq]
root           6  0.0  0.0      0     0 ?        I<   17:26   0:00 [netns]
root           8  0.0  0.0      0     0 ?        I<   17:26   0:00 [kworker/0:0H-events_highpri]

7. 현재 시스템에서 실행 중인 프로세스를 트리 구조로 표시

ps axwf
$ ps axwf
...
    795 ?        Ss     0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
    796 ?        S      0:00  \_ nginx: worker process
    797 ?        S      0:00  \_ nginx: worker process
    798 ?        S      0:00  \_ nginx: worker process
    799 ?        S      0:00  \_ nginx: worker process
  • a: 현재 로그인한 사용자와 관계 없이 모든 사용자의 프로세스를 보여줍니다.
  • x: 터미널에 연결되어 있지 않은 프로세스도 표시합니다.
  • w: 더 넓은 출력 형식을 사용하여 보기 좋게 출력합니다.
  • f: 프로세스 간 부모-자식 관계를 트리 구조로 표시합니다.

참고

  • ps 명령어는 다양한 옵션을 지원하며 사용자의 요구에 따라 다양한 정보를 출력할 수 있습니다.
  • 일부 시스템에서는 BSD 스타일 옵션과 UNIX 스타일 옵션을 지원하므로 시스템에 따라 옵션 사용법이 조금 다를 수 있습니다.

 

728x90