Skip to content

进程管理

在命令行中查看并管理进程。

查看 PID

查看 PID 的方法有多种,包括通过使用基础的 ps 命令,或使用可视化的 top 系列命令,而 Linux 更多倾向于使用后者。

ps 命令

Linux 的每个进程都会创建一个 PID,作为该进程的唯一标识,ps -He 可以查看所有的进程 PID 的树状结构,可以通过 | 管道传入 grep 命令对输出结果进行筛选。

查询包含 code 字符串的进程:

bash
ps -e | grep -i code

-i 表示忽略 grep 查询对大小的限制筛选。

例如产生以下输出:

txt
   3289 ?        00:00:37     code
   3292 ?        00:00:00       code
   3337 ?        00:00:59         code
   3293 ?        00:00:00       code
   3295 ?        00:00:00         code
   3379 ?        00:03:21           code
   3339 ?        00:00:01       code
   3412 ?        00:00:06       code
   3498 ?        00:00:02       code
   3511 ?        00:00:27       code
   3608 ?        00:00:00         code
   3627 ?        00:00:06         code

后续若要对进程进行操作,仅需操作根进程的 PID 即可,即 3289

更多用法查看 PID 适用 ps 命令,使用 man psps --help 命令获得帮助。

top 系列命令

目前有几款不同的 top,包括 top htop btop atop 等,其中 htop 以高实用性受欢迎,btop 颜值最高,但对终端窗口大小有限制,过小的窗口无法启动,此处以 htop 作为示例,top 之外的 top 系列命令在绝大多数发行版中需要手动安装。

bash
htop

终端输入 htop 后将会显示所有的 PID 与各类资源占用情况,同时可以使用键盘交互式地查找或操作一些进程。

查看资源占用

使用 top 系列命令可以查询系统常用资源的占用,也是最常见的方法之一,但针对特定资源,有特定的命令进行查询。

常用资源占用

htop 或其他系列命令将显示常用资源的占用情况,包括 CPU 占用,内存占用,线程数,PID 信息等。

内存占用

free 命令查看运行内存占用情况,常用以下命令进行查看:

bash
free -h

-h 将忽略具体大小,以 MB 或 GB 单位进行显示。

查看流量进出速度

使用 nload 命令可以查看流量进出速度,进出速度将显示分为两个列表显示。

查看端口占用情况

lsof 查看端口占用

txt
lsof -i:端口号

netstat 包含在 net-tools 软件包中,默认不会安装在绝大多数发行版中,需要手动安装。

常用参数如下

使用 -tunlp 参数列出所有监听协议端口占用情况,通过管道传入 grep 进行过滤以达到查询端口被哪个进程占用的效果。

bash
netstat -tunlp | grep

结束进程

常用的结束进程的方法有使用 kill 匹配进程 PID 进行结束,或使用 pkill 匹配进程名进行结束。

kill 命令

使用 kill [-n] PID 以杀掉命令,其中 n 表示要发送的数字信号,常用信号如下

  • SIGKILL(信号9):立即结束进程,不能被捕获或忽略。

  • SIGTERM(信号15):正常结束进程,可以被捕获或忽略。

  • SIGINT(信号2):通常是Ctrl+C产生的信号,可以被进程捕获或忽略。

例如查询到 code 进程 PID 为 3389,现在要杀掉该进程,使用如下命令:

bash
kill 3389

或指定信号,强制结束:

bash
kill -9 3389

pkill 命令

pkill 命令可以匹配进程名来杀掉进程,例如杀掉进程名为 code 的命令:

bash
pkill code

有时进程名过长,可以使用 -f 选项杀掉所有包含某个字符串的进程名的进程,例如杀掉 prismlauncher 进程可以使用如下命令:

bash
pkill -f prism

接管进程

一个名为 reptyr 的工具可以将进程从其他终端转移到本终端,使用方法如下:

text
reptyr <pid>