Ps (유닉스)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

ps는 현재 실행 중인 프로세스에 대한 정보를 보여주는 유닉스 및 유닉스 계열 운영 체제의 명령어이다. ps 명령어를 사용하면 프로세스 ID, 사용 시간, 메모리 사용량 등과 같은 정보를 확인할 수 있으며, grep, pgrep과 같은 다른 명령어와 함께 사용하여 특정 프로세스를 찾거나, 파이프를 통해 출력을 다른 명령어로 처리할 수 있다. ps는 다양한 옵션을 제공하며, 운영 체제에 따라 표준 옵션(-ef, -l) 또는 BSD 계열 옵션(aux)을 사용할 수 있다.

Ps (유닉스) - [IT 관련 정보]에 관한 문서
개요
유형유닉스, 유닉스 계열, 플랜 9, 인페르노, 콜리브리OS, IBM i 명령어
용도현재 실행 중인 프로세스 표시
최초 릴리스1973년 2월
개발자AT&T 벨 연구소 및 다양한 오픈 소스/상업 개발자
운영체제유닉스, 유닉스 계열, 플랜 9, 인페르노, 콜리브리OS, IBM i
프로그래밍 언어C
라이선스 (Plan 9)MIT 라이선스
추가 정보
플랫폼크로스 플랫폼
📚 더 읽어볼만한 페이지
  • 유닉스 프로세스 및 작업 관리 관련 소프트웨어 - Top (소프트웨어)
    top은 시스템의 실시간 상태를 보여주는 프로세스 모니터링 소프트웨어 유틸리티로, CPU 사용률, 메모리 사용량, 실행 중인 프로세스 목록 등 다양한 정보를 제공한다.
  • 유닉스 프로세스 및 작업 관리 관련 소프트웨어 - Kill (명령어)
    kill은 유닉스, 윈도우 등 다양한 운영 체제에서 프로세스에 신호를 보내는 데 사용되는 명령어로, 프로세스 ID 또는 프로세스 그룹 ID를 통해 프로세스 종료를 요청하거나 강제 종료를 실행한다.
  • 유닉스 SUS2008 유틸리티 - AWK
    AWK는 1977년에 개발된 텍스트 처리 및 프로그래밍 언어로, 유닉스 환경에서 텍스트 처리를 위해 설계되었으며 정규 표현식 처리 기능을 통해 텍스트 분석, 데이터 추출, 보고서 생성 등 다양한 작업을 수행한다.
  • 유닉스 SUS2008 유틸리티 - 로케일
    로케일은 소프트웨어 국제화 및 지역화에서 사용자 문화적 배경에 맞춰 사용 환경을 조정하는 설정으로, 표시 언어, 숫자/날짜 형식, 문자 분류, 통화 형식 등을 포함한다.

2. 예제

`ps` 명령어는 grep 명령어와 함께 사용하여 특정 프로세스에 대한 정보를 얻을 수 있다. 예를 들어, `firefox-bin`의 PID를 찾으려면 다음과 같이 입력한다.

```console
$ ps -A | grep firefox-bin
2701 ? 22:16:04 firefox-bin
```

pgrep을 사용하면 더 간결하게 동일한 결과를 얻을 수 있다.

```console
$ pgrep -l firefox-bin
2701 firefox-bin
```

root 권한으로 실행 중인 모든 프로세스를 사용자 형식으로 보려면 다음과 같이 입력한다.

```console
# ps -U root -u
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
root 1 0.0 0.0 9436 128 - ILs Sun00AM 0:00.12 /sbin/init --

2.1. 기본적인 사용 예제

다음은 현재 터미널에서 실행 중인 프로세스 목록을 보여주는 예제이다.


tux:~$ ps
PID TTY TIME CMD
7431 pts/0 00:00:00 su
7434 pts/0 00:00:00 bash
18585 pts/0 00:00:00 ps


grep 명령어와 함께 사용하여, 특정 프로세스의 프로세스 ID 같은 정보를 알아볼 수 있다.


tux:~$ ps -A | grep firefox-bin
11778 ? 02:40:08 firefox-bin
11779 ? 00:00:00 firefox-bin


사용자는 파이프를 사용하여 ps를 less와 같은 다른 명령어와 함께 사용하여 프로세스 상태 출력을 한 페이지씩 볼 수 있다.


$ ps -A | less


사용자는 또한 ps 명령을 grep 명령과 함께 사용하여 단일 프로세스에 대한 정보(예: ID)를 찾을 수 있다. (pgreppkill 명령 참조)


$ # `firefox-bin`의 PID를 찾으려고 시도, 2701
$ ps -A | grep firefox-bin
2701 ? 22:16:04 firefox-bin


pgrep을 사용하면 구문이 단순해지고 잠재적인 경합 조건이 방지된다.


$ pgrep -l firefox-bin
2701 firefox-bin


사용자 형식으로 root 권한으로 실행 중인 모든 프로세스를 보는 방법은 다음과 같다.


# ps -U root -u
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
root 1 0.0 0.0 9436 128 - ILs Sun00AM 0:00.12 /sbin/init --

2.2. grep 명령어와 함께 사용

`ps -A` 명령어는 시스템의 모든 프로세스를 표시하며, `grep firefox-bin` 명령어는 "firefox-bin"이라는 문자열을 포함하는 프로세스만 필터링한다. 이를 통해 특정 프로세스의 ID를 쉽게 찾을 수 있다.

```console
tux:~$ ps -A | grep firefox-bin
11778 ? 02:40:08 firefox-bin
11779 ? 00:00:00 firefox-bin
```

pgrep을 사용하면 구문이 단순해지고 잠재적인 경합 조건이 방지된다.

```console
$ pgrep -l firefox-bin
2701 firefox-bin

2.3. pgrep 명령어 사용 (참고)

pgrep 명령어는 ps와 grep을 함께 사용하는 것보다 더 간결하게 특정 프로세스를 찾을 수 있게 해준다.

```console
$ pgrep -l firefox-bin
2701 firefox-bin

3. 옵션

`ps`는 다양한 옵션을 가지고 있다. 단일 유닉스 규격 표준을 지원하는 운영 체제에서는 `-ef` 옵션과 함께 사용되는데, `-e`는 모든 프로세스를, `-f`는 완전한 출력 포맷을 선택한다. `-l` 옵션은 긴 출력 포맷을 지정한다.

BSD 유래 시스템들은 역사적인 갈등 때문에 POSIX와 UNIX 표준 옵션을 사용하지 않는다. 이러한 시스템들에서는 `ps`가 비표준 옵션 `aux`로 실행된다. `a`는 다른 사용자의 프로세스를 포함한 모든 프로세스를, `x`는 제어 터미널 없는 프로세스를, `u`는 각 프로세스의 통제 사용자를 추가한다. "aux" 앞에 "-"가 없음에 유의해야 하며, `aux` 뒤에 `www`를 추가하여 모든 변수를 포함한 프로세스 정보를 볼 수 있다.

3.1. 표준 옵션 (POSIX/SUS)

단일 유닉스 규격 표준을 지원하는 운영 체제에서 `ps` 명령어는 일반적으로 '-ef' 옵션과 함께 사용된다. '-ef'에서 '-e'는 모든(every) 프로세스를 선택하고, '-f'는 완전한(full) 출력 형식을 지정한다. 이 외에도 자주 사용되는 옵션으로 '-l'이 있는데, 이는 긴(long) 출력 형식을 나타낸다.

BSD에서 파생된 대부분의 시스템에서는 역사적인 충돌 때문에 POSIX와 UNIX 표준 옵션을 사용하지 않는다. (예를 들어, 'e'나 '-e' 옵션은 환경 변수를 표시한다.) 이러한 시스템에서 `ps` 명령어는 주로 비표준 옵션인 'aux'와 함께 실행된다. 'aux'에서 'a'는 다른 사용자의 프로세스를 포함하여 모든 프로세스를 나열하고, 'x'는 제어 터미널이 없는 모든 프로세스를, 'u'는 각 프로세스의 제어 사용자를 추가한다. 이 구문을 사용할 때는 최대 호환성을 위해 'aux' 앞에 '-'를 붙이지 않는다. 프로세스에 대한 더 자세한 정보를 보려면 (모든 매개변수를 포함) 'ps auxwww'와 같이 'aux' 뒤에 'www'를 추가할 수 있다.

3.2. BSD 계열 옵션

BSD 계열 운영 체제에서 `ps` 명령어는 일반적으로 `aux` 옵션과 함께 사용된다. `aux`에서 `a` 옵션은 다른 사용자의 프로세스를 포함한 모든 프로세스를 표시하며, `x` 옵션은 제어 터미널이 없는 프로세스를 포함하고, `u` 옵션은 각 프로세스의 사용자 이름을 추가한다. 이러한 옵션을 사용할 때는 `aux` 앞에 `-`를 붙이지 않는다.

`auxwww`처럼 `aux` 뒤에 `www`를 추가하면, 잘리지 않은 전체 명령어와 모든 매개변수를 포함하여 프로세스에 대한 완전한 정보를 볼 수 있다.

4. 헤더 정보

👆
좌우로 밀어서 보기
열 머리글내용
%CPU프로세스가 사용하고 있는 CPU의 양
%MEM프로세스가 사용하고 있는 메모리의 양
ADDR프로세스의 메모리 주소
C 또는 CPCPU 사용량 및 스케줄링 정보
COMMAND*프로세스의 이름 (인수가 있는 경우 포함)
NInice 값
F플래그
PID프로세스 ID 번호
PPID부모 프로세스의 ID 번호
PRI프로세스의 우선순위
RSS상주 집합 크기
S 또는 STAT프로세스 상태 코드
START 또는 STIME프로세스가 시작된 시간
VSZ가상 메모리 사용량
TIME프로세스가 사용한 CPU 시간의 양
TT 또는 TTY프로세스와 연관된 터미널
UID 또는 USER프로세스 소유자의 사용자 이름
WCHAN프로세스가 대기 중인 이벤트의 메모리 주소

* = 종종 약어로 사용됨

5. 구현

KolibriOS는 `ps` 명령어 구현을 포함한다. `ps` 명령어는 IBM i 운영 체제로 이식되었다. 윈도우 파워셸에서 `ps`는 `Get-Process` cmdlet에 대한 미리 정의된 명령어 별칭이며, 이는 본질적으로 동일한 목적을 수행한다.