【Linux】查看进程(ps | top)

摘要

本文探讨如何在 Linux 查看进程。

引言

什么是进程呢?进程是程序的一个具体实现,是执行程序的过程。同一程序可以执行多次,每次都可以在内存中开辟独立的空间来装载,从而产生多个进程。

不同的进程还可以拥有各自的独立的输入输出接口。简单来说,一个运行中的程序就可以称为进程。一个运行中的程序,也很可能包含着多个进程。

Linux 是一个多任务的操作系统,系统上经常同时运行着多个进程。本文不关心进程的产生和运行,只讨论如何管理和控制进程。让他们能够很好地为用户服务。

要对进程进行控制管理,首先得查看当前进程的状态,占用了哪些资源等信息,这些信息对于系统管理员来说十分重要。

ps(Process Status 的缩写)命令是 Linux 中最常用,也是非常强大的进程查看命令,可以查看进程在当前时间点的状态。由于历史原因,ps 选项挺复杂的,兼容了好几种不同的系统格式语法格式,我们这里只讨论标准的 Linux 风格的用法。

用法

ps

  1. 首先创建一个 bad.py 文件,里面写了一个死循环:
touch bad.py
vi bad.py # 写一个死循环,如:while True: pass,保存退出
  1. 运行 bad.py
python bad.py
  1. 新建一个终端窗口,ps -A 列出系统中所有的进程。输出内容的每行均代表一个进程,每行有四个字段,其定义如下:
ps -A
  • PID:进程 ID
  • TTY:进程使用的终端(问号表示进程不占用终端)
  • TIME:进程运行持续时间
  • CMD:进程运行对应的程序名
  1. 但是我们没有看到我们想要看到的关键信息,即进程占 CPU 计算资源的比例。使用 ps -Af 可以列出进程更加完整的信息。
  • UID:表示进程是由哪个用户运行的
  • PPID:进程父进程的 PID
  • C:进程占用主机 CPU 计算资源的比例
  • STIME:进程开始运行的时间
  1. 从上述输出信息中,我们发现了一行占用 CPU 资源为 94% 的进程。很明显,这就是我们的罪魁祸首了。
root      3422 31088 94 21:55 pts/1    00:09:19 /root/.pyenv/versions/3.9.0b5/bin/python bad.py
  1. 使用 kill 命令结合进程的 PID 来终止这个罪魁祸首。
kill 3422
  1. 终止之后,可以发现另一个执行 bad.py 文件的窗口也出现了 Terminated 字样,再次验证了进程确实被终止了。
[root@centos ~]# python bad.py
Terminated

top

除了 ps 外,Linux 还提供了另一个监视系统的工具:top。与 ps 不同,top 是动态监视系统进程的工具,而 ps 是静态的。默认情况下,top 命令每三秒刷新一次。

top 界面分为两部分。光标上面的部分显示关系系统整体的性能,下面的部分显示各进程信息。光标所在处用于输入操作命令。第二部分的各个字段定义如下:

  • PID:进程 ID
  • USER:进程发起者
  • PR:进程优先级
  • NI:Nice 值
  • VIRT:进程使用的虚拟内存总量(单位:KB)
  • RES:进程使用的未被换出的物理内存大小(单位:KB)
  • SHR:共享内存大小(单位:KB)
  • S:进程运行状态
  • %CPU:上次更新到现在的 CPU 时间占用百分比
  • %MEM:进程使用物理内存所占百分比
  • TIME+:进程使用的 CPU 时间总计(单位:1/100秒)
  • COMMAND:产生进程的命令名称

默认进入 top 时,进程按照 CPU 占用量降序排序。常用的操作 top 面板的命令如下:

  • M:按内存占用量降序排序
  • N:按进程 PID 降序排序
  • P:回到按 CPU 占用量降序排序
  • R:在当前基础上反向排序
  • <>:向左或向右改变排序关键字
  • q:退出 top

参考

中国大学 MOOC | Linux 系统管理 | 主题 10 管好进程和服务 | 小节 1 查看进程

猜你喜欢

转载自blog.csdn.net/qq_42951560/article/details/125228609