ps命令:查看系统中正在运行的进程

ps 是用来静态地查看系统中正在运行的进程的命令。不过这个命令有些特殊,它的部分选项不能加入"-",比如命令"ps aux",其中"aux"是选项,但是这个选项不能加入"-"。这是因为 ps 命令的部分选项需要遵守 BSD 操作系统的格式。所以,ps 命令的常用选项的组合是固定的。ps 命令格式如下:

查看系统中所有的进程,使用BS操作系统格式

[root@localhost ~]# ps aux

查看系统中所有的进程,使用Linux标准命令格式

[root@localhost ~]# ps -le

选项:

  • a:显示一个终端的所有进程,除会话引线外;
  • u:显示进程的归属用户及内存的使用情况;
  • x:显示没有控制终端的进程;
  • -l:长格式显示。显示更加详细的信息;
  • -e:显示所有进程;

大家如果执行"man ps"命令,则会发现 ps 命令的帮助为了适应不同的类 UNIX 系统,可用格式非常多,不方便记忆。所以,我建议大家记忆几个固定选项即可。比如:

  • "ps aux"可以查看系统中所有的进程;
  • "ps -le"可以查看系统中所有的进程,而且还能看到进程的父进程的PID和进程优先级;
  • "ps -l"只能看到当前Shell产生的进程;

ps aux 查看系统中所有的进程

[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 126696 7196 ? Ss 15:40 0:05 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root 12253 0.0 0.0 139492 1632 pts/1 R+ 21:02 0:00 ps aux
.........省略部分输出...........
  • USER:该进程是由哪个用户产生的。
  • PID:进程的 ID。
  • %CPU:该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源。
  • %MEM:该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源。
  • VSZ:该进程占用虚拟内存的大小,单位为 KB。
  • RSS:该进程占用实际物理内存的大小,单位为 KB。
  • TTY:该进程是在哪个终端运行的。其中,tty1 ~ tty7 代表本地控制台终端(可以通过 Alt+F1 ~ F7 快捷键切换不同的终端),tty1~tty6 是本地的字符界面终端,tty7 是图形终端。pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用 pts/0,第二个远程连接占用 pts/1,依次増长。
  • STAT:进程状态。常见的状态有以下几种:
    1. -D:不可被唤醒的睡眠状态,通常用于 I/O 情况。
    2. -R:该进程正在运行。
    3. -S:该进程处于睡眠状态,可被唤醒。
    4. -T:停止状态,可能是在后台暂停或进程处于除错状态。
    5. -W:内存交互状态(从 2.6 内核开始无效)。
    6. -X:死掉的进程(应该不会出现)。
    7. -Z:僵尸进程。进程已经中止,但是部分程序还在内存当中。
    8. -<:高优先级(以下状态在 BSD 格式中出现)。
    9. -N:低优先级。
    10. -L:被锁入内存。
    11. -s:包含子进程。
    12. -l:多线程(小写 L)。
    13. -+:位于后台。
  • START:该进程的启动时间。
  • TIME:该进程占用 CPU 的运算时间,注意不是系统时间。
  • COMMAND:产生此进程的命令名。

ps -le 查看系统中所有的进程

"ps aux"命令可以看到系统中所有的进程,"ps -le"命令也能看到系统中所有的进程。由于"-l"选项的作用,所以"ps -le"命令能够看到更加详细的信息,比如父进程的 PID、优先级等。 命令如下:

[root@localhost ~]# ps -le
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1 0 0 80 0 - 31674 ep_pol ? 00:00:05 systemd
4 R 0 12391 12146 0 80 0 - 34343 - pts/1 00:00:00 ps
…省部分输出…
  • F:进程标志,说明进程的权限,常见的标志有两个;1:进程可以被复制,但是不能被执行;4:进程使用超级用户权限;
  • S:进程状态。具体的状态和"psaux"命令中的 STAT 状态一致;
  • UID:运行此进程的用户的 ID;
  • PID:进程的 ID;
  • PPID:父进程的 ID;
  • C:该进程的 CPU 使用率,单位是百分比;
  • PRI:进程的优先级,数值越小,该进程的优先级越高,越早被 CPU 执行;
  • NI:进程的优先级,数值越小,该进程越早被执行;
  • ADDR:该进程在内存的哪个位置;
  • SZ:该进程占用多大内存;
  • WCHAN:该进程是否运行。"-"代表正在运行;
  • TTY:该进程由哪个终端产生;
  • TIME:该进程占用 CPU 的运算时间,注意不是系统时间;
  • CMD:产生此进程的命令名;

ps -l 查看系统中所有的进程

有时我不想看到所有的进程,只想查看一下当前登录产生了哪些进程,命令如下:

[root@localhost ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 12146 12140 0 80 0 - 29009 wait pts/1 00:00:00 bash
0 R 0 12838 12146 0 80 0 - 34343 - pts/1 00:00:00 ps

可以看到,这次从 pts/1 虚拟终端登录,只产生了两个进程:一个是登录之后生成的 Shell,也就是 bash;另一个是正在执行的 ps 命令。

格式:ps [选项]

常用选项

-aux 显示当前终端所有进程(a),当前用户在所有终端下的进程(x),以用户格式输出(u)

-elf 显示系统内所有进程(-e),以长格式输出(-l)信息,包括最完整的进程信息(-f)

ps aux 列出正在运行的所有进程

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

用户名 进程ID %CPU %内存 虚拟内存 固定内存 终端 状态 起始时间 CPU时间 程序指令

ps -elf 列出正在运行的所有进程

F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD

列的信息

说明

F

内核分配给进程的系统标记

S

进程的状态

UID

用户ID

PID

进程的进程号

PPID

父进程的进程号

C

进程生命周期中的CPU利用率

PRI

进程的优先级(数字越大,优先级越低)

NI

nice值,用来参与决定优先级

ADDR

进程的内存地址

SZ

假如进程被换出,所需交换空间的大致大小

WCHAN

进程休眠的内核函数名(进程或内核线程为之等待或休眠的事件)

STIME

进程启动时的系统时间

TTY

进程启动时的终端设备

TIME

运行进程需要的累计CPU时间

CMD

启动的程序名称

top命令:持续动态监听进程运行状态

ps 命令用于显示命令运行时这个时间节点的进程状态,而 top 命令则用于动态地持续监听进程的运行状态,而且可以查看系统的健康状态。top 命令格式如下:

[root@localhost ~]#top [选项]

选项:

  • -d 秒数:指定 top 命令每隔几秒更新。默认是 3 秒;
  • -b:使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中;
  • -n 次数:指定 top 命令执行的次数。一般和"-"选项合用;
  • -p:指定 PID。只查看某个 PID 的进程;
  • -s:使 top 命令在安全模式中运行,避免在交互模式中出现错误;
  • -u 用户名:只监听某个用户的进程;

在 top 命令的交互模式中可以执行的命令:

  • ? 或 h:显示交互模式的帮助;
  • P:按照 CPU 的使用率排序,默认就是此选项;
  • M:按照内存的使用率排序;
  • N:按照 PID 排序;
  • T:按照 CPU 的累积运算时间排序,也就是按照 TIME+ 项排序;
  • k:按照 PID 给予某个进程一个信号。一般用于中止某个进程,信号 9 是强制中止的信号;
  • r:按照 PID 给某个进程重设优先级(Nice)值;
  • q:退出 top 命令;

top 命令动态监听进程运行状态

[root@localhost ~]# top
top - 21:22:51 up 5:42, 4 users, load average: 0.00, 0.01, 0.05
Tasks: 422 total, 2 running, 420 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1868660 total, 146588 free, 741164 used, 980908 buff/cache
KiB Swap: 2097148 total, 2092656 free, 4492 used. 905336 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 126696 7196 2376 S 0.0 0.4 0:05.47 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.04 kthreadd

top 命令的输出内容是动态的,默认每隔 3 秒刷新一次。命令的输出主要分为两部分:

  1. 第一部分是前五行,显示的是整个系统的资源使用状况,我们就是通过这些输出来判断服务器的资源使用状态的;
  2. 第二部分从第六行开始,显示的是系统中进程的信息;

第一行为任务队列信息

内 容 说 明
12:26:46 系统当前时间
up 1 day, 13:32 系统的运行时间.本机己经运行 1 天 13 小时 32 分钟
2 users 当前登录了两个用户
load average: 0.00,0.00,0.00 系统在之前 1 分钟、5 分钟、15 分钟的平均负载。如果 CPU 是单核的,则这个数值超过 1 就是高负载:如果 CPU 是四核的,则这个数值超过 4 就是高负载 (这个平均负载完全是依据个人经验来进行判断的,一般认为不应该超过服务器 CPU 的核数)

第二行为进程信息

内 容 说 明
Tasks: 95 total 系统中的进程总数
1 running 正在运行的进程数
94 sleeping 睡眠的进程数
0 stopped 正在停止的进程数
0 zombie 僵尸进程数。如果不是 0,则需要手工检査僵尸进程

第三行为 CPU 信息

内 容 说 明
Cpu(s): 0.1 %us 用户模式占用的 CPU 百分比
0.1%sy 系统模式占用的 CPU 百分比
0.0%ni 改变过优先级的用户进程占用的 CPU 百分比
99.7%id 空闲 CPU 占用的 CPU 百分比
0.1%wa 等待输入/输出的进程占用的 CPU 百分比
0.0%hi 硬中断请求服务占用的 CPU 百分比
0.1%si 软中断请求服务占用的 CPU 百分比
0.0%st st(steal time)意为虚拟时间百分比,就是当有虚拟机时,虚拟 CPU 等待实际 CPU 的时间百分比

第四行为物理内存信息

内 容 说 明
Mem: 625344k total 物理内存的总量,单位为KB
571504k used 己经使用的物理内存数量
53840k&ee 空闲的物理内存数量。我们使用的是虚拟机,共分配了 628MB内存,所以只有53MB的空闲内存
65800k buffers 作为缓冲的内存数量

第五行为交换分区(swap)信息

内 容 说 明
Swap: 524280k total 交换分区(虚拟内存)的总大小
Ok used 已经使用的交换分区的大小
524280k free 空闲交换分区的大小
409280k cached 作为缓存的交换分区的大小

通过 top 命令的第一部分就可以判断服务器的健康状态。如果 1 分钟、5 分钟、15 分钟的平均负载高于 1,则证明系统压力较大。如果 CPU 的使用率过高或空闲率过低,则证明系统压力较大。如果物理内存的空闲内存过小,则也证明系统压力较大。

这时,我们就应该判断是什么进程占用了系统资源。如果是不必要的进程,就应该结束这些进程;如果是必需进程,那么我们该増加服务器资源(比如増加虚拟机内存),或者建立集群服务器。

我们还要解释一下缓冲(buffer)和缓存(cache)的区别:

  • 缓存(cache)是在读取硬盘中的数据时,把最常用的数据保存在内存的缓存区中,再次读取该数据时,就不去硬盘中读取了,而在缓存中读取。
  • 缓冲(buffer)是在向硬盘写入数据时,先把数据放入缓冲区,然后再一起向硬盘写入,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。

简单来说,缓存(cache)是用来加速数据从硬盘中"读取"的,而缓冲(buffer)是用来加速数据"写入"硬盘的。

top 命令的第二部分输出,主要是系统进程信息。这部分和 ps 命令的输出比较类似,只是如果在终端执行 top 命令,则不能看到所有的进程,而只能看到占比靠前的进程。

  • PID:进程的 ID。
  • USER:该进程所属的用户。
  • PR:优先级,数值越小优先级越高。
  • NI:优先级,数值越小、优先级越高。
  • VIRT:该进程使用的虚拟内存的大小,单位为 KB。
  • RES:该进程使用的物理内存的大小,单位为 KB。
  • SHR:共享内存大小,单位为 KB。
  • S:进程状态。
  • %CPU:该进程占用 CPU 的百分比。
  • %MEM:该进程占用内存的百分比。
  • TIME+:该进程共占用的 CPU 时间。
  • COMMAND:进程的命令名。

top -p 选项 査看某个进程

[root@localhost ~]# top -p 1
top - 21:29:00 up 5:48, 4 users, load average: 0.00, 0.01, 0.05
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1868660 total, 147192 free, 740532 used, 980936 buff/cache
KiB Swap: 2097148 total, 2092656 free, 4492 used. 905964 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 126696 7196 2376 S 0.0 0.4 0:05.47 systemd

top 命令如果不正确退出,则会持续运行。在 top 命令的交互界面中按"q"键会退出 top 命令;也可以按"?"或"h"键得到 top 命令交互界面的帮助信息;

按"k"键中止某个进程

#按"k"键,会提示输入要杀死进程的PID

[root@localhost ~]# top
top - 21:40:00 up 5:59, 4 users, load average: 0.00, 0.01, 0.05
Tasks: 422 total, 3 running, 419 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.3 us, 0.3 sy, 0.0 ni, 98.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1868660 total, 146552 free, 741084 used, 981024 buff/cache
KiB Swap: 2097148 total, 2092660 free, 4488 used. 905404 avail Mem
PID to signal/kill [default pid = 3411] 3411 lizhouw+ 20 0 1591604 302096 41324 S 1.0 16.2 1:26.71 gnome-shell
13226 root 20 0 146416 2336 1420 R 0.7 0.1 0:00.05 top

输入进程号后,会提示我们输入信号,信号 9 代表强制中止

按"r"键改变某个进程的优先级

需要注意的是,我们能够修改的只有 Nice 的优先级,而不能修改 Priority 的优先级。具体修改命令如下:

[root@localhost ~]# top -p 18977
top - 14:17:09 up 1 day, 15:22, 3 users, load average: 0.00,0.00, 0.00
Tasks: 97 total, 1 running, 96 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3%us, 0.0%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 625344k total, 574124k used, 51220k free, 66896k buffers
Swap: 524280k total, 0k used, 524280k free, 409324k cached
PID to renice:
#输入"r"交互命令之后,提示输入要修改优先级的进程的PID
PID USER PR Nl VIRT RES SHR S %CPU %MEM TIME+ COMMAND
18977 root 20 0 11592 3304 2572 S 0.0 0.5 0:04.37 sshd

输入"r"交互命令,会提示输入需要修改优先级的进程的 PID。例如,我们想要修改 18977 这个 sshd 远程连接进程的优先级,就输入该进程的 PID。命令如下:

Renice PID 18977 to value: 10
#输入PID后,需要输入Nice的优先级号
#我们把18977进程的优先级调整为10,回车后就能看到
PID USER PR Nl VIRT RES SHR S %CPU %MEM TIME+ COMMAND
18977 root 30 10 11592 3304 2572 R 0.0 0.5 0:04.38 sshd
#18977进程的优先级已经被修改了

如果在操作终端执行 top 命令,则并不能看到系统中所有的进程,默认看到的只是 CPU 占比靠前的进程。如果我们想要看到所有的进程,则可以把 top 命令的执行结果重定向到文件中。不过 top 命令是持续运行的,这时就需要使用"-b"和"-n"选项了。具体命令如下:

[root@localhost ~]# top -b -n 1 > /root/top.log

让top命令只执行一次,然后把执行结果保存到top.log文件中,这样就能看到所有的进程了

pstree用法:查看进程树命令

pstree 是查看进程树的命令,也就是查看进程的相关性的命令。命令格式如下:

[root@localhost ~]# pstree [选项]

选项:

  • -p:菜单进程的 PID;
  • -u:显示进接的所属用户;

pstree命令查看进程树

语法:
pstree [选项]:更加直观的来看进程信息

选项 作用
-p 显示进程的PID
-u 显示进程的所属用户

案例1:
请以树状的形式显示进程的PID
pstree -p
案例2:
请以树状的形式显示进程的用户PID
pstree -u

[root@localhost ~]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
├─NetworkManager─┬─dhclient
│ └─2*[{NetworkManager}]
├─bluetoothd
├─rsyslogd───2*[{rsyslogd}] #有2个rsyslogd进程存在
├─rtkit-daemon───2*[{rtkit-daemon}]
├─sshd─┬─sshd───bash
│ ├─sshd───bash───top
│ └─sshd───bash───pstree #Pstree命令进程是在远程连接中被执行的
├─systemd-logind
└─wpa_supplicant

Linux 进程管理 ps、top、pstree命令的更多相关文章

  1. [Linux]系统管理: 进程管理(ps/top/pstree/kill/pkill), 工作管理, 系统资源查看, 系统定时任务

    进程管理:查看与终止 进程查看 1. 进程是正在执行的程序或命令. 2. 进程管理的作用: 判断服务器健康状态, 查看系统中所有进程 杀死进程 3. 查看系统中所有进程 ps aux    # 查看系 ...

  2. Linux进程管理之top

    关于Linux进程查看,前面讲解了ps命令,下面拉介绍另一个命令top ps:静态查看 top:动态查看 动态查看进程的状态 # top [root@wei ~]# top top - 18:38:4 ...

  3. Linux进程管理 - ps,top,pstree,signal,kill,killall举例演示

    ps:将某个时间点的进程运行情况撷取下来 [root@www ~]# ps aux <==观察系统所有的进程数据 [root@www ~]# ps -lA <==也是能够观察所有系统的数据 ...

  4. Linux进程管理(一)

    目录 Linux进程管理(一) 参考 pstree命令 pidof命令 pmap命令 pwdx命令 ps命令 nice调优 发送信号 Linux进程管理(一)

  5. Linux进程管理、任务管理

    查看进程 Linux中的进程可以使用ps.pstree命令查看. 一般使用 ps aux (注意,没有短划线-:虽然加上不影响执行,只是会提示),还可以使用 ps -le,都是查看所有进程,区别在于显 ...

  6. Linux进程管理(二)

    目录 Linux进程管理(二) 参考 vmstat命令 top命令 Linux进程管理(二)

  7. Linux进程管理四大工具ps \dstat\ top\ htop

    Linux进程管理之“四大名捕” 一.四大名捕 四大名捕,最初出现于温瑞安创作的武侠小说,是朝廷中正义力量诸葛小花的四大徒弟,四人各怀绝技,分别是轻功暗器高手“无情”.内功卓越的高手“铁手”.腿功惊人 ...

  8. 12个Linux进程管理命令介绍(转)

    12个Linux进程管理命令介绍 [日期:2015-06-02] 来源:Linux中国  作者:Linux [字体:大 中 小]   执行中的程序在称作进程.当程序以可执行文件存放在存储中,并且运行的 ...

  9. [转帖]十二 个经典 Linux 进程管理命令介绍

    https://www.cnblogs.com/swordxia/p/4550825.html 接了 http referer 头 没法显示图片 可以去原始blog 里面去查看.   随笔- 109  ...

随机推荐

  1. Java面试总结(面试流程及核心面试题)

    Java面试流程及核心面试题 面试整体流程 1.1 简单的自我介绍      我是xxxx,工作xxx年.我先后在xxxx公司.yyyy公司工作.先后做个xxxx项目.yyyy项目. 1.2 你简单介 ...

  2. golang fmt格式“占位符”

    # 定义示例类型和变量 type Human struct { Name string } var people = Human{Name:"zhangsan"} 普通占位符 占位 ...

  3. 50A

    #include <iostream> using namespace std; int main() { int m, n; cin>>m>>n; cout< ...

  4. NgDL:第四周深层神经网络

    4.3核对矩阵维数 根据前向的矩阵,可以计算出右上的规律,对于第L层的w来说,其维数为(n[L],n[L-1]),n[L]表示第L层的单元数. 4.4为什么深层神经网络会好用? 如果要做一个人脸识别的 ...

  5. java串口通讯环境配置

    用java实现串口通信(windows系统下),配置如下: 1.comm.jar放置到 JAVA_HOME/jre/lib/ext;2.win32com.dll放置到 JAVA_HOME/bin;3. ...

  6. 【LeetCode每天一题】Swap Nodes in Pairs

    Given a linked list, swap every two adjacent nodes and return its head. You may not modify the value ...

  7. 2019.03.24 Ajax

    也还是会用到jquery中的Ajax请i求 所以第一还是引入jQuery包   可以去网上搜腾讯网静态资源库 然后引入包    Ajax还是异步处理  处理堵塞问题  import time 就可以了 ...

  8. JS 8-4 OOP instanceof

    instanceof数据类型的判断方法 一般要求左边是个对象,右边是个函数或者构造器 [1,2] instanceof Array //true 左边的原型 指向了 右边的prototype属性

  9. [LeetCode] 364. Nested List Weight Sum II_Medium tag:DFS

    Given a nested list of integers, return the sum of all integers in the list weighted by their depth. ...

  10. HTop依赖包

    htop 是一个 Linux 下的交互式的进程浏览器,可以用来替换Linux下的top命令. 1.安装HTop时需要先安装依赖包:rpmforge-release-0.5.3-1.el6.rf.x86 ...