일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- framework
- 자바
- DeepLearning
- Numpy
- git
- 인공지능
- Pattern
- mysql
- javascript
- interface
- Server
- Security
- Analysis
- SSH
- Deep
- Python
- error
- mariaDB
- 함수
- data
- ai
- learning
- centos
- db
- java
- Spring
- Linux
- LIST
- Web
- Github
- Today
- Total
PostIT
[Linux/Server] 리눅스 ps 명령어 사용하기 본문
# [Linux/Server] 리눅스 ps 명령어 사용하기
## 1. 개요
ps 명령어는 현재 시스템에서 돌고있는 프로세스를 보여주는 가장 기본적인 명령어입니다. 이 명령은 top나 htop같이 실시간으로 시스템 자원을 출력하는 명령과는 달리 ps 명령어를 입력한 순간의 정보(user id, cpu 사용량, memory 사용량, 사용한 명령이들 등)를 보여줍니다.
ps 명령은 옵션 입력 방법이 bsd 스타일과 unix 스타일, gnu 스타일로 나뉩니다. bsd 스타일은 'ps aux'와 같이 대쉬가 없는 스타일인 반면 unix 스타일은 'ps -ef' 처럼 옵션앞에 대쉬를 넣어 옵션임을 표시하는 스타일입니다. gnu 스타일은 대쉬를 두개 넣는 스타일로 'ps --help' 처럼 사용합니다. 동일하게 문자 u를 사용하는 옵션이라도 대쉬의 유무에 따라 의미가 달라집니다.
## 2. 내용.
### 1. 모든 프로세스 표시하기
다음 옵션은 현재 시스템에서 돌고있는 모든 프로세스의 정보를 표시합니다. 옵션으로 'ax' 또는 '-e'를 사용합니다.
$ ps ax
PID TTY STAT TIME COMMAND
1 ? Ss 0:00 python app.py
6 pts/0 Ss 0:00 bash
15 pts/0 R+ 0:00 ps ax
$ ps -e
PID TTY TIME CMD
1 ? 00:00:00 python
6 pts/0 00:00:00 bash
16 pts/0 00:00:00 ps
실행되고있는 프로세스가 너무 많아서 한번에 보기 힘들 경우 less 명령어를 파이프하여 사용하면 보여지는 목록을 제어하며 프로세스를 확인할 수 있습니다. 사용 방법은 'ps ax | less'와 같습니다.
더 자세한 프로세스의 정보를 보고 싶다면 'u' 옵션이나 '-f' 옵션을 추가합니다.
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
admin 1 0.0 1.2 102556 25028 ? Ss 00:34 0:00 python app.py
admin 6 0.0 0.1 21960 3712 pts/0 Ss 00:39 0:00 bash
admin 17 0.0 0.1 19188 2412 pts/0 R+ 00:51 0:00 ps aux
$ ps -ef
UID PID PPID C STIME TTY TIME CMD
admin 1 0 0 00:34 ? 00:00:00 python app.py
admin 6 0 0 00:39 pts/0 00:00:00 bash
admin 18 6 0 00:51 pts/0 00:00:00 ps -ef
### 2. 특정 사용자 이름으로 보기
사용자 이름으로 목록을 필터링하고 싶을 때에는 '-u' 옵션과 바로뒤에 사용자 이름을 입력하면 됩니다. 앞서 살펴보았던 '-e' 옵션은 entire 목록을 가져오라는 의미이고 '-f'는 full-format 입니다. 사용자 이름을 기준으로 필터링할 것이므로 '-e'는 제거하고 명령을 입력합니다.
$ ps -fu admin
$ ps -f -u admin
UID PID PPID C STIME TTY TIME CMD
admin 1 0 0 00:34 ? 00:00:00 python app.py
admin 6 0 0 00:39 pts/0 00:00:00 bash
admin 20 6 0 00:54 pts/0 00:00:00 ps -fu admin
둘 이상의 사용자 명으로 필터링하려면 콤마(',')로 구분하여 입력합니다.
### 3. 프로세스 id 또는 이름으로보기
프로세스 id로 필터링 하려면 '-p' 옵션을 사용합니다. 이 옵션 역시 여러개의 프로세스 id로 보고싶다면 콤마(',')로 구분하여 사용합니다.
$ ps -f -p 1,25011
UID PID PPID C STIME TTY TIME CMD
admin 1 0 0 00:34 ? 00:00:00 python app.py
프로세스 이름으로 보려면 '-C' 옵션을 사용해야 합니다. 여기서 한가지 주의할 사항은 프로세스의 정확한 이름을 입력해야 한다는 점입니다. 와일드 카드나 부분적인 이름은 검색되지 않습니다.
$ ps -C ssh
PID TTY TIME CMD
$ ps -C ssh*
PID TTY TIME CMD
$ ps -C sshd
PID TTY TIME CMD
4755 ? 00:00:00 sshd
4801 ? 00:00:00 sshd
4883 ? 00:00:00 sshd
24939 ? 00:00:00 sshd
25010 ? 00:00:00 sshd
좀 더 유연하게 검색을 하고자 한다면 파이프로 'grep' 명령을 사용하는게 좋습니다.
$ ps -e | grep ssh
4755 ? 00:00:00 sshd
4801 ? 00:00:00 sshd
4883 ? 00:00:00 sshd
24939 ? 00:00:00 sshd
25010 ? 00:00:00 sshd
### 4. cpu나 메모리 사용량으로 정렬하기
시스템을 관리하다보면 어떤 프로세스가 시스템 자원을 많이 사용하는지 알고 싶을 때가 있습니다. 전체목록을 출력하고 일일히 대조하여 찾아볼 수도 있지만 원하는 항목으로 정렬이 된다면 더 빠르게 자원 소모량을 알 수 있을 것 입니다.
정렬하는 방법은 gnu 스타일 옵션인 '--sort'를 사용하면 됩니다. 특징으로는 정렬에 필요한 필드를 여러개 지정할 수 있고 각각의 필드를 오름차순으로 할지 내림차순으로 할지 지정할 수 있습니다. 오름차순과 내림차순을 지정하는 심볼은 '+', '-' 입니다. 정렬에는 매우 다양한 파라미터를 사용할 수 있습니다. 자세한 사항은 man 페이지를 참고하기 바랍니다.
다음 예는 cpu 사용량을 우선으로 내림차순 정렬한 다음 메모리 사용량을 기준으로 내림차순 정렬하고 상위 5개의 프로세스만 출력하는 명령입니다.
$ ps aux --sort=-pcpu,-pmem | head -5
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1261 0.2 0.3 165508 3928 ? Sl Mar19 7:33 /usr/sbin/someprocess
lightdm 9040 0.0 1.9 839564 19988 ? Sl Mar19 0:06 /usr/sbin/otherprocess
root 9025 0.0 1.9 235720 19660 tty7 Ss+ Mar19 0:02 /usr/bin/process
lightdm 9086 0.0 1.6 508360 16632 ? Sl Mar19 0:00 /usr/lib/service
lightdm 9083 0.0 . 4 602992 14696 ? Sl Mar19 0:00 nm-applet
5. 출력할 칼럼의 종류 바꾸기
ps 명령은 원하는 칼럼만 보이도록 설정하는 기능도 있습니다. 옵션으로는 '-o'를 사용합니다. 다음 예는 pid, username, cpu, memory, command 만을 출력하게 합니다.
$ ps -e -o pid,uname,pcpu,pmem,comm
PID USER %CPU %MEM COMMAND
1 admin 0.0 1.2 python
6 admin 0.0 0.1 bash
25 admin 0.0 0.1 ps
6. ps로 실시간 모니터링하기
'watch' 명령을 이용해 일정 시간마다 ps를 실행하여 실시간 감시자로 사용할 수 있습니다. 'top'과 같지는 않으며 그저 간단히 보기위함입니다.
$ watch -n 1 'ps -e -o pid,uname,pcpu,pmem,comm --sort=-pmem | head -5'
Every 1.0s: ps -e -o pid,uname,pcpu,pmem,comm --sort=-pcpu,-pmem | head -5
Mon Mar 21 20:36:34 2016
PID USER %CPU %MEM COMMAND
1261 root 0.2 0.3 vmtoolsd
25732 ykshin 0.1 0.7 vi
25694 ykshin 0.1 0.2 watch
9040 lightdm 0.0 1.9 unity-greeter
## 4. 출처.
'Linux > Linux' 카테고리의 다른 글
[Firewall/UFW] How to build Firewall using UFW in ubuntu 16.04 From DigitalOcean (0) | 2017.08.23 |
---|---|
[Linux/Grep] 문자열 패턴 검색 (Grep) (0) | 2017.03.10 |
[Server/CentOS] CentOS root 원격 접근 제한하기 - 사용자는 가능 (0) | 2016.12.21 |
[Lunix/CentOS] samba를 이용한 공유 폴더 만들기 - 퍼옴 (0) | 2016.12.07 |
[Linux/CentOs/Php]CentOs Php5.6 설치 - 기존 설치 업그레이드 하기 - 퍼옴 (0) | 2016.12.06 |