>  기사  >  웹 프론트엔드  >  매일 Linux 명령: ps 명령

매일 Linux 명령: ps 명령

高洛峰
高洛峰원래의
2016-12-29 14:30:341399검색

Linux의 ps 명령은 Process Status의 약어입니다. ps 명령은 현재 시스템에서 실행 중인 프로세스를 나열하는 데 사용됩니다. ps 명령은 ps 명령이 실행되는 순간의 프로세스인 현재 프로세스의 스냅샷을 나열합니다. 프로세스 정보를 동적으로 표시하려면 top 명령을 사용하면 됩니다.

프로세스를 모니터링하고 제어하려면 먼저 현재 프로세스의 상황을 이해해야 합니다. 즉, 현재 프로세스를 봐야 하며, ps 명령은 가장 기본이면서도 매우 강력한 프로세스 보기 명령입니다. . 이 명령을 사용하여 실행 중인 프로세스와 실행 상태, 프로세스 종료 여부, 프로세스 종료 여부, 너무 많은 리소스를 점유하고 있는 프로세스 등을 확인합니다. 즉, 이 명령을 실행하면 대부분의 정보를 얻을 수 있습니다.

ps는 프로세스에 대한 일회성 보기를 제공하지만 제공되는 보기 결과는 동적이거나 연속적이지 않습니다. 프로세스 시간을 모니터링하려면 상단 도구를 사용해야 합니다.

kill 명령은 프로세스를 종료하는 데 사용됩니다.


Linux의 프로세스에는 5가지 상태가 있습니다.

1. 실행 중(실행 중 또는 실행 대기열에서 대기 중)

중단됨 (휴면 중, 차단됨, 특정 조건이 형성될 때까지 대기 중이거나 신호 수신 중)

3. 무정전(깨어나지 않고 신호 수신 시 실행 중, 프로세스는 인터럽트가 발생할 때까지 기다려야 함)

4. 좀비(프로세스가 종료되었지만 상위 프로세스가 wait4() 시스템 호출을 호출하고 해제될 때까지 프로세스 설명자가 존재함)

5. 중지(프로세스가 SIGSTOP, SIGSTP, SIGTIN을 수신함) , SIGTOU 신호 실행 후 실행 중지)


ps 도구 식별 프로세스의 5가지 상태 코드:

D 무중단 절전(보통 IO)

R 실행 실행 가능(실행 대기열에서)

S 인터럽트 대기 중

T 추적 중지 또는 중지됨

Z 좀비 존재하지 않는("좀비") 프로세스


1. 명령 형식:

ps[매개변수]

2. 명령 기능:

현재 프로세스의 상태를 표시하는 데 사용됩니다

3. 명령 매개변수:

a 모든 프로세스 표시

-a 동일한 터미널 아래의 모든 프로그램 표시

-A 모든 프로세스 표시

c 실제 상태 표시 프로세스 이름

-N 역방향 선택

-e는 "-A"와 같습니다

e는 환경 변수를 표시합니다

f는 사이의 관계를 표시합니다. 프로그램

-H 트리 구조 표시

r 현재 터미널의 프로세스를 표시

T 현재 터미널의 모든 프로그램을 표시

u 프로그램의 모든 프로세스 지정된 사용자

-au 자세한 정보 표시

-aux 다른 사용자가 포함된 모든 일정 표시

-Cc21d5b2dbf788dd07eb92dd26e84b7aa 지정된 명령의 상태 나열

- -lines 각 페이지에 표시되는 줄 수

--width 각 페이지에 표시되는 문자 수

--help 표시 도움말 정보

--version 버전 표시

4. 사용 예:

예 1: 모든 프로세스 정보 표시

명령:

ps -A

출력:

[root@localhost test6]# ps -A
  PID TTY          TIME CMD
    1 ?        00:00:00 init
    2 ?        00:00:01 migration/0
    3 ?        00:00:00 ksoftirqd/0
    4 ?        00:00:01 migration/1
    5 ?        00:00:00 ksoftirqd/1
    6 ?        00:29:57 events/0
    7 ?        00:00:00 events/1
    8 ?        00:00:00 khelper
   49 ?        00:00:00 kthread
   54 ?        00:00:00 kblockd/0
   55 ?        00:00:00 kblockd/1
   56 ?        00:00:00 kacpid
  217 ?        00:00:00 cqueue/0
  ……省略部分结果

설명:

예 2: 지정된 사용자 정보 표시

명령:

ps -u root

출력:

[root@localhost test6]# ps -u root
  PID TTY          TIME CMD
    1 ?        00:00:00 init
    2 ?        00:00:01 migration/0
    3 ?        00:00:00 ksoftirqd/0
    4 ?        00:00:01 migration/1
    5 ?        00:00:00 ksoftirqd/1
    6 ?        00:29:57 events/0
    7 ?        00:00:00 events/1
    8 ?        00:00:00 khelper
   49 ?        00:00:00 kthread
   54 ?        00:00:00 kblockd/0
   55 ?        00:00:00 kblockd/1
   56 ?        00:00:00 kacpid
    ……省略部分结果

설명:

예 3: 명령줄과 함께 모든 프로세스 정보 표시

명령:

ps -ef

출력:

[root@localhost test6]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Nov02 ?        00:00:00 init [3]                  
root         2     1  0 Nov02 ?        00:00:01 [migration/0]
root         3     1  0 Nov02 ?        00:00:00 [ksoftirqd/0]
root         4     1  0 Nov02 ?        00:00:01 [migration/1]
root         5     1  0 Nov02 ?        00:00:00 [ksoftirqd/1]
root         6     1  0 Nov02 ?        00:29:57 [events/0]
root         7     1  0 Nov02 ?        00:00:00 [events/1]
root         8     1  0 Nov02 ?        00:00:00 [khelper]
root        49     1  0 Nov02 ?        00:00:00 [kthread]
root        54    49  0 Nov02 ?        00:00:00 [kblockd/0]
root        55    49  0 Nov02 ?        00:00:00 [kblockd/1]
root        56    49  0 Nov02 ?        00:00:00 [kacpid]
……省略部分结果

지침:

예 4: 특정 프로세스를 찾기 위해 일반적으로 사용되는 ps와 grep의 조합

명령:

ps -ef|grep ssh

출력:

[root@localhost test6]# ps -ef|grep ssh
root      2720     1  0 Nov02 ?        00:00:00 /usr/sbin/sshd
root     17394  2720  0 14:58 ?        00:00:00 sshd: root@pts/0 
root     17465 17398  0 15:57 pts/0    00:00:00 grep ssh

설명:

예 5: 이 로그인에 대해 현재 귀하에게 속한 PID 및 관련 정보 나열

명령:

ps -l

출력:

[root@localhost test6]# ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0 17398 17394  0  75   0 - 16543 wait   pts/0    00:00:00 bash
4 R     0 17469 17398  0  77   0 - 15877 -      pts/0    00:00:00 ps

설명:

각 관련 정보의 의미:

F는 이 플래그를 나타냅니다. 프로그램(플래그), 4는 사용자가 슈퍼 사용자임을 의미

S는 이 프로그램의 상태(STAT)를 나타내며 각 STAT의 의미는 텍스트에 소개됩니다

UID 프로그램은 UID 소유

PID는 이 프로그램의 ID입니다!

PPID는 상위 상위 프로그램의 ID

C CPU 자원 사용률

PRI는 Priority(Priority Execution Order)의 약어로, 자세히 소개하겠습니다. 나중에

NI는 Nice 값입니다.

ADDR은 프로그램이 메모리의 어느 부분에 있는지를 나타내는 커널 함수입니다. 실행중인 프로그램이라면 보통 "-"입니다

SZ 사용된 메모리 크기

WCHAN 이 프로그램이 현재 실행 중인가요? -이면 실행 중이라는 뜻입니다

TTY 로그인 사용자의 단말 위치

TIME CPU 사용시간.

CMD에서 명령이 실행되는 이유


기본적으로 ps는 현재 bash 쉘과 관련된 PID만 나열하므로 ps를 사용할 때. -l, PID가 3개만 있습니다.


实例6:列出目前所有的正在内存当中的程序

命令:

ps aux

输出:

[root@localhost test6]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  10368   676 ?        Ss   Nov02   0:00 init [3]                  
root         2  0.0  0.0      0     0 ?        S<   Nov02   0:01 [migration/0]
root         3  0.0  0.0      0     0 ?        SN   Nov02   0:00 [ksoftirqd/0]
root         4  0.0  0.0      0     0 ?        S<   Nov02   0:01 [migration/1]
root         5  0.0  0.0      0     0 ?        SN   Nov02   0:00 [ksoftirqd/1]
root         6  0.0  0.0      0     0 ?        S<   Nov02  29:57 [events/0]
root         7  0.0  0.0      0     0 ?        S<   Nov02   0:00 [events/1]
root         8  0.0  0.0      0     0 ?        S<   Nov02   0:00 [khelper]
root        49  0.0  0.0      0     0 ?        S<   Nov02   0:00 [kthread]
root        54  0.0  0.0      0     0 ?        S<   Nov02   0:00 [kblockd/0]
root        55  0.0  0.0      0     0 ?        S<   Nov02   0:00 [kblockd/1]
root        56  0.0  0.0      0     0 ?        S<   Nov02   0:00 [kacpid]
……省略部分结果

说明:

USER:该 process 属于那个使用者账号的

PID :该 process 的号码

%CPU:该 process 使用掉的 CPU 资源百分比

%MEM:该 process 所占用的物理内存百分比

VSZ :该 process 使用掉的虚拟内存量 (Kbytes)

RSS :该 process 占用的固定的内存量 (Kbytes)

TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。

STAT:该程序目前的状态,主要的状态有

R :该程序目前正在运作,或者是可被运作

S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。

T :该程序目前正在侦测或者是停止了

Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态

START:该 process 被触发启动的时间

TIME :该 process 实际使用 CPU 运作的时间

COMMAND:该程序的实际指令


实例7:列出类似程序树的程序显示

命令:

ps -axjf

输出:

[root@localhost test6]# ps -axjf
Warning: bad syntax, perhaps a bogus &#39;-&#39;? See /usr/share/doc/procps-3.2.7/FAQ
 PPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND
    0     1     1     1 ?           -1 Ss       0   0:00 init [3]                  
    1     2     1     1 ?           -1 S<       0   0:01 [migration/0]
    1     3     1     1 ?           -1 SN       0   0:00 [ksoftirqd/0]
    1     4     1     1 ?           -1 S<       0   0:01 [migration/1]
    1     5     1     1 ?           -1 SN       0   0:00 [ksoftirqd/1]
    1     6     1     1 ?           -1 S<       0  29:58 [events/0]
    1     7     1     1 ?           -1 S<       0   0:00 [events/1]
    1     8     1     1 ?           -1 S<       0   0:00 [khelper]
    1    49     1     1 ?           -1 S<       0   0:00 [kthread]
   49    54     1     1 ?           -1 S<       0   0:00  \_ [kblockd/0]
   49    55     1     1 ?           -1 S<       0   0:00  \_ [kblockd/1]
   49    56     1     1 ?           -1 S<       0   0:00  \_ [kacpid]

说明:

实例8:找出与 cron 与 syslog 这两个服务有关的 PID 号码

命令:

输出:

[root@localhost test6]# ps aux | egrep &#39;(cron|syslog)&#39;
root      2682  0.0  0.0  83384  2000 ?        Sl   Nov02   0:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
root      2735  0.0  0.0  74812  1140 ?        Ss   Nov02   0:00 crond
root     17475  0.0  0.0  61180   832 pts/0    S+   16:27   0:00 egrep (cron|syslog)
[root@localhost test6]#

说明:

其他实例:

1. 可以用 | 管道和 more 连接起来分页查看

命令:

ps -aux |more


2. 把所有进程显示出来,并输出到ps001.txt文件

命令:

ps -aux > ps001.txt


3. 输出指定的字段

命令:

 ps -o pid,ppid,pgrp,session,tpgid,comm

输出:

[root@localhost test6]# ps -o pid,ppid,pgrp,session,tpgid,comm
  PID  PPID  PGRP  SESS TPGID COMMAND
17398 17394 17398 17398 17478 bash
17478 17398 17478 17398 17478 ps
[root@localhost test6]#


更多每天一个linux命:ps命令相关文章请关注PHP中文网!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.