进程管理之ps

一、简介

ps命令用于报告当前系统的进程状态,ps命令同时也是个非常强大的进程查看命令,该命令可以查看到当前哪些进程在运行,进程的运行状态、进程占用的资源等等。ps命令结合kill命令可以随机终止异常的进程,这在日常维护中也是经常使用的一种手段。

二、ps命令的使用

1、命令格式

ps [options]

2、选项

ps命令的选项有三种风格:
1、UNIX格式,类似于-a;
2、BSD格式,如aux;
3、长选项,--help;

常用选项包括:
a:显示所有与终端相关的进程;
x:显示所有与终端无关的进程;
u:以用户为中心组织显示进程的状态信息;
-e:显示所有进程;
-f:显示进程的完整格式的信息;
-F:显示更详细的完整格式,比-f详细;
-H:以层级结构显示进程的相关信息;
-p PID1,PID2...:根据指定的PID显示对应的进程信息;
-u USER:显示指定用户的进程信息;
-o filter1,filter2...:自定义要显示的字段,各选项之间以,分隔;常用的filter包括:pid、ni、pri、command、psr、pcpu、stat、tty、ppid、rtprio等等;

常用的组合选项有:aux,-ef,-eFH,-eo,axo;

3、ps命令信息输出

[root@localhost ~]# ps aux | head -10
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.5 126104  5280 ?        Ss   03:05   0:05 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root         2  0.0  0.0      0     0 ?        S    03:05   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    03:05   0:01 [ksoftirqd/0]
root         7  0.0  0.0      0     0 ?        S    03:05   0:00 [migration/0]
root         8  0.0  0.0      0     0 ?        S    03:05   0:00 [rcu_bh]
root         9  0.0  0.0      0     0 ?        S    03:05   0:00 [rcuob/0]

上述是ps命令的一个输出信息,其中比较直观的像USER、PID、CPU等这些就不是解释了,其他的输出状态分别指:
VSZ:虚拟内存集;
RSS:Resident Size,常驻内存集;
TTY:进程所属的终端是哪个;
STAT:进程的运行状态;
START:进程的启动时间;
TIME:进程的运行时间;
COMMAND:进程名;
C:表示CPU的利用率
PSR:表示CPU运行在哪个CPU之上;

其中STAT的常见状态有以下:
R:running;
S:interruptable sleeping;
D:uninterruptable sleeping;
T:Stopped;
Z:zombie;
+:前台进程;
l:多线程进程;
N:低优先级进程;
<:高优先级进程;
s:session leader;

三、使用案例

  • 显示所有与用户相关的进程
[root@localhost ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.5 126104  5292 ?        Ss   03:05   0:05 /usr/lib/systemd/systemd --switched-root --syste
root         2  0.0  0.0      0     0 ?        S    03:05   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    03:05   0:01 [ksoftirqd/0]
root         7  0.0  0.0      0     0 ?        S    03:05   0:00 [migration/0]
root         8  0.0  0.0      0     0 ?        S    03:05   0:00 [rcu_bh]
root         9  0.0  0.0      0     0 ?        S    03:05   0:00 [rcuob/0]
root        10  0.0  0.0      0     0 ?        S    03:05   0:00 [rcuob/1]
root        11  0.0  0.0      0     0 ?        S    03:05   0:00 [rcuob/2]
root        12  0.0  0.0      0     0 ?        S    03:05   0:00 [rcuob/3]
root        13  0.0  0.0      0     0 ?        S    03:05   0:00 [rcuob/4]
...
  • 通过进程ID显示相应的进程信息
[root@localhost ~]# ps -F -p 1768,30698
UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root      1768     1  0 20640  2864   0 03:05 ?        00:00:00 /usr/sbin/sshd -D
root     30698  1768  0 35718  3664   0 10:06 ?        00:00:01 sshd: root@pts/0
  • 自定义显示的输出格式
[root@localhost ~]# ps -e -o pmem,pcpu,pid,uname
%MEM %CPU   PID USER
 0.5  0.0     1 root
 0.0  0.0     2 root
 0.0  0.0     3 root
 0.0  0.0     7 root
 0.0  0.0     8 root
 0.0  0.0     9 root
 0.0  0.0    10 root
  • 根据父进程ID查询子进程
[root@localhost ~]# ps -F --ppid 1768
UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root     30698  1768  0 35718  3664   0 10:06 ?        00:00:01 sshd: root@pts/0
root     38673  1768  0 35718  5000   0 11:11 ?        00:00:00 sshd: root@pts/1
  • 根据用户查询其对应的进程信息
[root@localhost ~]# ps -f -u charlie
UID        PID  PPID  C STIME TTY          TIME CMD
charlie  42676 42670  0 12:00 ?        00:00:00 sshd: charlie@pts/2
charlie  42677 42676  0 12:00 pts/2    00:00:00 -bash
charlie  42772 42677  0 12:00 pts/2    00:00:00 ping www.baidu.com

你可能感兴趣的:(进程管理之ps)