ps (프로세스의 상태를 확인한다.)
작성자 정보
- 웹관리자 작성
- 작성일
컨텐츠 정보
- 5,976 조회
- 0 추천
- 목록
본문
ps
프로세스의 상태를 확인하는 명령어이다.
주로 서버의 상태를 파악하기 위하여 프로세스의 상태를 관리자가 파악할때에 사용하는 명령어이다.
가장 흔하게 실행하는 명령어 가운데 하나이며, 서버관리에 있어서는 없어서는 안될 매우 중요한 명령어라고 할 수 있다.
사용형식
ps [options]
사용예 #1
그냥 ps라고만 하면 다음과 같이 간단한 결과를 얻을 수 있다.
아무런 옵션이 주어지지 않으면 현재 사용자가 실행시킨 프로세스만을 보여준다.
[root@host3 root]# ps
PID TTY TIME CMD
823 pts/0 00:00:00 bash
1545 pts/0 00:00:00 ps
[root@host3 root]#
즉, 위의 결과로 보면 현재 ps를 실행시킨 사용자는 bash쉘을 사용중 ps를 실행시킨 것을 알 수 있다.
사용예 #2
ps명령어를 사용할때 가장 흔히 사용하는 옵션이 -e와 -f 옵션이다.
이 둘을 합쳐서 "ps -ef"라는 옵션을 가장 흔히 사용한다.
-e 옵션은 모든 프로세스를 표시해주는 옵션이며, -f옵션은 전체경로로 프로세스를 표시해주는 옵션이다.
따라서 모든 프로세스를 자세하게 보려고 할때에 사용하는 옵션이 -ef이다.
다음의 예를 보자.
[root@host3 root]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 10:35 ? 00:00:04 init
root 2 1 0 10:35 ? 00:00:00 [keventd]
root 3 1 0 10:35 ? 00:00:00 [kapmd]
root 4 1 0 10:35 ? 00:00:00 [ksoftirqd_CPU0]
root 5 1 0 10:35 ? 00:00:00 [kswapd]
root 6 1 0 10:35 ? 00:00:00 [bdflush]
root 7 1 0 10:35 ? 00:00:00 [kupdated]
root 8 1 0 10:35 ? 00:00:00 [mdrecoveryd]
root 12 1 0 10:35 ? 00:00:00 [kjournald]
root 64 1 0 10:35 ? 00:00:00 [khubd]
root 156 1 0 10:35 ? 00:00:00 [kjournald]
root 444 1 0 10:36 ? 00:00:00 [eth1]
root 491 1 0 10:36 ? 00:00:00 syslogd -m 0
root 495 1 0 10:36 ? 00:00:00 klogd -x
rpc 506 1 0 10:36 ? 00:00:00 portmap
rpcuser 525 1 0 10:36 ? 00:00:00 rpc.statd
root 604 1 0 10:36 ? 00:00:00 /usr/sbin/apmd -p 10 -w 5 -W -P /etc/sysconfig/apm-scripts/apmscript
root 642 1 0 10:36 ? 00:00:01 /usr/sbin/sshd
root 656 1 0 10:36 ? 00:00:00 xinetd -stayalive -reuse -pidfile /var/run/xinetd.pid
root 679 1 0 10:36 ? 00:00:00 sendmail: accepting connections
smmsp 689 1 0 10:36 ? 00:00:00 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue
root 699 1 0 10:36 ? 00:00:00 gpm -t ps/2 -m /dev/mouse
root 708 1 0 10:36 ? 00:00:00 crond
xfs 741 1 0 10:36 ? 00:00:00 xfs -droppriv -daemon
daemon 759 1 0 10:36 ? 00:00:00 /usr/sbin/atd
root 768 1 0 10:36 tty1 00:00:00 /sbin/mingetty tty1
root 769 1 0 10:36 tty2 00:00:00 /sbin/mingetty tty2
root 770 1 0 10:36 tty3 00:00:00 /sbin/mingetty tty3
root 771 1 0 10:36 tty4 00:00:00 /sbin/mingetty tty4
root 772 1 0 10:36 tty5 00:00:00 /sbin/mingetty tty5
root 773 1 0 10:36 tty6 00:00:00 /sbin/mingetty tty6
root 774 1 0 10:36 ? 00:00:00 /usr/bin/gdm-binary -nodaemon
root 807 774 0 10:36 ? 00:00:00 /usr/bin/gdm-binary -nodaemon
root 808 807 0 10:36 ? 00:01:30 /usr/X11R6/bin/X :0 -auth /var/gdm/:0.Xauth
gdm 820 807 0 10:36 ? 00:00:02 /usr/bin/gdmgreeter
root 821 642 0 10:37 ? 00:00:00 /usr/sbin/sshd
root 823 821 0 10:37 pts/0 00:00:00 -bash
root 1562 823 0 18:14 pts/0 00:00:00 ps -ef
[root@host3 root]#
좀 복잡해 보이지만 가장 자세하게 프로세스의 상태를 볼 수 있는 명령이다.
사용예 #3
위의 "사용예 #2"는 복잡해서 좀 처럼 정리가 되지 않는다.
특정 프로세스의 상태를 정확하게 확인하고자 한다면 필요한 프로세스명을 주어서 그에 해당하는 프로세스만 확인하는 방법을 보자.
다음 예는 모든 프로세스들 중에서 tty에 관련된 프로세스만을 확인하는 예이다.
즉, "ps -ef"의 결과로 모든 프로세스들의 전체 경로를 표시해주게 되며 이 결과를 다시 "|"로 연결하여 "grep tty"의 결과 tty에 관련된 프로세스만을 표시해주게 된다.
간단히 정리하면 아래 명령어의 결과는 "모든 프로세스들 중에서 tty"에 관련된 프로세스만을 표시해준다."이다.
[root@host3 root]# ps -ef | grep tty
root 768 1 0 10:36 tty1 00:00:00 /sbin/mingetty tty1
root 769 1 0 10:36 tty2 00:00:00 /sbin/mingetty tty2
root 770 1 0 10:36 tty3 00:00:00 /sbin/mingetty tty3
root 771 1 0 10:36 tty4 00:00:00 /sbin/mingetty tty4
root 772 1 0 10:36 tty5 00:00:00 /sbin/mingetty tty5
root 773 1 0 10:36 tty6 00:00:00 /sbin/mingetty tty6
root 1564 823 0 18:21 pts/0 00:00:00 grep tty
[root@host3 root]#
참고로 다음 명령의 결과는 현재 리눅스에서 실행되고 있는 모든 프로세스들 중에서 ssh에 관련된 프로세스만을 표시해준다.
[root@host3 root]# ps -ef | grep ssh
root 642 1 0 10:36 ? 00:00:01 /usr/sbin/sshd
root 821 642 0 10:37 ? 00:00:00 /usr/sbin/sshd
root 1566 823 0 18:21 pts/0 00:00:00 grep ssh
[root@host3 root]#
위의 두 결과를 두고 보자면 다음과 같은 결론을 얻을 수 있다.
즉, 특정 프로세스만을 확인하고자 할때에는 "ps -ef | grep 프로세스명"과 같이 하면 된다는 것을 알 수 있다.
다음관 같이 실무에서 많이 사용하는 응용예를 들어보자.
httpd에 관련된 로그를 확인하고자 할 때에는 다음과 같이 하자.
[root@host3 root]# ps -ef | grep httpd
그리고 여기서 조금 응용하면 httpd의 프로세스 갯수가 몇개나 되는가를 확인하려면 다음과 같이 한다.
[root@host3 root]# ps -ef | grep httpd | wc -l
마찬가지로 mysqld에 대한 프로세스도 httpd와 동일하게 하면 된다.
즉, mysqld에 관련된 프로세스를 확인하려면 다음과 같이 한다.
[root@host3 root]# ps -ef | grep mysqld
그리고 mysqld의 프로세스가 몇개나 되는가를 확인하려면 다음과 같이 한다.
[root@host3 root]# ps -ef | grep mysqld | wc -l
이상과 같이 ps는 현재 서버내에 모든 프로세스들을 대상으로 그 상태를 확인할 수 있는 명령어이다.
저작권:수퍼유저코리아(www.superuser.co.kr), 무단 재배포및 복사를 금합니다.
관련자료
-
이전
-
다음