안녕하세요 가야태자 @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 명령어를 설명하면서 다시 알려드리겠습니다.
감사합니다.