강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

ps (프로세스의 상태를 확인한다.)

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문


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), 무단 재배포및 복사를 금합니다.

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,039 명
  • 현재 강좌수 :  35,845 개
  • 현재 접속자 :  80 명