# 进程管理 在命令行中查看并管理进程。 ## 查看 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 ps` 或 `ps --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 ```