반응형

안녕하세요 가야태자 @talkit 입니다. 

지난 번에는 top, free에 관해서 이야기를 했습니다. 

리눅스/Linux top, free현재 CPU/Memory 상태를 알아보자. How to get Information for CPU and Memory status on Linux https://talkit.tistory.com/689

위 글을 참조 하시면 됩니다. 

오늘은 ps에 대해서 말씀 드리겠습니다. 리눅서에서 실행되는 프로세스, 프로그램에 대해서 보여 주는 프로그램입니다. 

사용법은 아래와 같습니다. 

ps [옵션들]

그냥 ps 명령어를 한번 내려 보겠습니다. 

 ps
    PID TTY          TIME CMD
   2388 pts/1    00:00:00 bash
   2649 pts/1    00:00:00 ps

위와 같이 나옵니다. 지금 현재 쉘 상에서 실행하는 프로세스만 나옵니다. 

옵션에 관해서 좀 알아 보겠습니다. 

-e 옵션은 리눅스의 모든 프로세스를 보여 준다고 되어 있습니다. 

ps -e
    PID TTY          TIME CMD
      1 ?        00:00:01 systemd
      2 ?        00:00:00 kthreadd
            ...
     52 ?        00:00:00 ksoftirqd/6
     54 ?        00:00:00 kworker/6:0H-events_highpri

아까 보다 훨 많은 프로세스가 보일 겁니다. 

-f 옵션은 명령어의 모든 경로를 보여 준답니다. 지난 번글의 top에서 <c> 키 토글과 비슷합니다. 

자 한번 해보겠습니다. 

ps -f
UID          PID    PPID  C STIME TTY          TIME CMD
talkit      2388    2387  0 06:09 pts/1    00:00:00 -bash
talkit      2691    2388  0 06:34 pts/1    00:00:00 ps -f

예쁘게 나오네요.

자 두가지를 조합해서 명령어를 내려 보겠습니다.  -ef 가 되겠습니다. ^^

UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 05:59 ?        00:00:01 /sbin/init auto noprompt
               ...
root         553       1  0 05:59 ?        00:00:00 /lib/systemd/systemd-udevd
root         560       1  0 05:59 ?        00:00:00 vmware-vmblock-fuse /run/vmblock-fuse -o rw,subtype=vmware-vmblock,default_permissions,allow_other,dev,suid
               ...
talkit      2103    1929  0 06:07 ?        00:00:00 /usr/libexec/gsd-disk-utility-notify
talkit      2107    1717  0 06:07 ?        00:00:00 /usr/libexec/gsd-xsettings
talkit      2137    1717  0 06:07 ?        00:00:00 /usr/libexec/gsd-printer
talkit      2143    1717  0 06:07 ?        00:00:01 /usr/bin/vmtoolsd -n vmusr --blockFd 3
talkit      2157    1733  0 06:07 ?        00:00:00 /usr/libexec/gvfsd-trash --spawner :1.3 /org/gtk/gvfs/exec_spaw/0
talkit      2206    1717  0 06:07 ?        00:00:00 /usr/libexec/dconf-service
talkit      2211    1717  0 06:07 ?        00:00:00 /usr/libexec/evolution-addressbook-factory

위에 보시면 실제로 /usr/bin 등의 풀경로와 옆에 옵션 정보까지 다 보여 주고 있습니다. 

그리고, -e 옵션을 넣었기 때문에 모든 프로세스가 나왔습니다. 

ps 에 대한 설명은 여기까지 말씀 드리구요.

grep과 조합 하는 법을 알려 드리겠습니다. 

제가 쓰는 방법 외에도 많겠지만 저는 그냥 제가 사용하는 방법을 알려 드리겠습니다. ^^

ps [옵션들] | grep "검색어"

위와 같이 사용합니다. 옵션들은 저는 거의 -ef 로 고정 되어 있습니다. ^^

그래서 제가 실행한 프로세스만 찾아 보겠습니다. 

ps -ef | grep "talkit"
0 06:07 ?        00:00:00 /lib/systemd/systemd --user
talkit      1718    1717  0 06:07 ?        00:00:00 (sd-pam)
talkit      1724    1717  0 06:07 ?        00:00:00 /usr/bin/pulseaudio --daemonize=no --log-target=journal
talkit      1726    1717  0 06:07 ?        00:00:00 /usr/libexec/tracker-miner-fs
talkit      1729    1717  0 06:07 ?        00:00:00 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
talkit      1733    1717  0 06:07 ?        00:00:00 /usr/libexec/gvfsd
talkit      1738    1717  0 06:07 ?        00:00:00 /usr/libexec/gvfsd-fuse /run/user/1000/gvfs -f -o big_writes
talkit      1758    1717  0 06:07 ?        00:00:00 /usr/libexec/gvfs-udisks2-volume-monitor
talkit      1763    1717  0 06:07 ?        00:00:00 /usr/libexec/gvfs-mtp-volume-monitor
talkit      1767    1717  0 06:07 ?        00:00:00 /usr/libexec/gvfs-gphoto2-volume-monitor
talkit      1771    1717  0 06:07 ?        00:00:00 /usr/libexec/gvfs-goa-volume-monitor
talkit      1777    1717  0 06:07 ?        00:00:00 /usr/libexec/goa-daemon
talkit      1780       1  0 06:07 ?        00:00:00 /usr/bin/gnome-keyring-daemon --daemonize --login
talkit      1791    1717  0 06:07 ?        00:00:00 /usr/libexec/goa-identity-service
talkit      1797    1717  0 06:07 ?        00:00:00 /usr/libexec/gvfs-afc-volume-monitor
talkit      1815    1704  0 06:07 tty2     00:00:00 /usr/lib/gdm3/gdm-x-session --run-script env GNOME_SHELL_SESSION_MODE=ubuntu /usr/bin/gnome-session --systemd --session=ubuntu
talkit      1817    1815  0 06:07 tty2     00:00:01 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3
talkit      1827    1815  0 06:07 tty2     00:00:00 /usr/libexec/gnome-session-binary --systemd --systemd --session=ubuntu
talkit      1894    1827  0 06:07 ?        00:00:00 /usr/bin/ssh-agent /usr/bin/im-launch env GNOME_SHELL_SESSION_MODE=ubuntu /usr/bin/gnome-session --systemd --session=ubuntu
talkit      1913    1717  0 06:07 ?        00:00:00 /usr/libexec/at-spi-bus-launcher
talkit      1918    1913  0 06:07 ?        00:00:00 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 3
talkit      1922    1717  0 06:07 ?        00:00:00 /usr/libexec/gnome-session-ctl --monitor
talkit      1929    1717  0 06:07 ?        00:00:00 /usr/libexec/gnome-session-binary --systemd-service --session=ubuntu
talkit      1942    1717  0 06:07 ?        00:00:05 /usr/bin/gnome-shell

이런식으로 제 계정으로 실행된 내용들이 나옵니다. ^^

그리고 monitor 가 포함되어 있는 프로세스만 찾을 수도 있습니다. 

 ps -ef | grep  "monitor"
talkit      1758    1717  0 06:07 ?        00:00:00 /usr/libexec/gvfs-udisks2-volume-monitor
talkit      1763    1717  0 06:07 ?        00:00:00 /usr/libexec/gvfs-mtp-volume-monitor
talkit      1767    1717  0 06:07 ?        00:00:00 /usr/libexec/gvfs-gphoto2-volume-monitor
talkit      1771    1717  0 06:07 ?        00:00:00 /usr/libexec/gvfs-goa-volume-monitor
talkit      1797    1717  0 06:07 ?        00:00:00 /usr/libexec/gvfs-afc-volume-monitor
talkit      1922    1717  0 06:07 ?        00:00:00 /usr/libexec/gnome-session-ctl --monitor
talkit      2698    2388  0 06:40 pts/1    00:00:00 grep --color=auto monitor

참고로 한단어 일경우 "" 로 안묶어 주셔도 됩니다. ^^

grep을 이용해서 해킹이 들어 왔는지 내가 아닌 다른계정이 있는지도 찾을 수 있구요.

내 프로그램이 살아 있는지도 알수 있습니다. 

그리고, 찾은 프로그램의 프로세스 번호도 알 수 있습니다. ^^ 

두번째 칸의 숫자가 프로세스 번호 입니다. 

그 프로세스를 죽이려고 할때 프로세스 번호가 필요 합니다. 

해당 내용은 kill 명령어를 설명하면서 다시 알려드리겠습니다. 

감사합니다. 

반응형

+ Recent posts