ps (프로세스의 상태를 확인한다.)
작성자 정보
- 웹관리자 작성
 - 작성일
 
컨텐츠 정보
- 8,367 조회
 - 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), 무단 재배포및 복사를 금합니다.
관련자료
- 
			이전
 - 
			다음
 
								