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 다른 사용자가 포함된 모든 일정 표시
-C
- -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 '-'? 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 '(cron|syslog)' 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中文网!