---
url: https://eoht.net/fe/linux/process.md
description: >-
  整理 Linux 进程查询、终止和监控命令，示范用 ps、pgrep、top、lsof 按用户、名称、端口、PID 或目录查找进程及打开文件，说明 kill
  处理 PID 与作业、top 按 CPU 和内存排序的方法，并用 pmap 查看内存映射，给出 awk、grep、xargs 组合筛选和结束进程的实例。
---

# Linux 进程管理 进程监控与优化 {#linux-process-management}

## 查询进程 {#query-linux-processes}

### 查询正在运行的进程信息 {#list-running-processes}

```sh
ps -ef
```

### 查询归属于用户 root 的进程 {#list-processes-for-root-user}

```sh
ps -ef | grep root
ps -lu root
```

### 查询进程 ID（适合只记得部分进程字段） {#find-process-id-by-partial-name}

```sh
pgrep 查找进程
```

### 查询进程名中含有 re 的进程 {#find-processes-containing-pattern}

```sh
pgrep -l re
2 kthreadd
28 ecryptfs-kthrea
29515 redis-server
```

### 以完整的格式显示所有的进程 {#show-all-processes-full-format}

```sh
ps -ajx
```

### 显示进程信息，并实时更新 {#monitor-processes-in-real-time}

```sh
top
```

### 查看端口占用的进程状态 {#find-process-using-port}

```sh
lsof -i:3306
```

### 查看用户 username 的进程所打开的文件 {#list-open-files-for-user}

```sh
lsof -u username
```

### 查询 init 进程当前打开的文件 {#list-open-files-for-init-process}

```sh
lsof -c init
```

### 查询指定进程 ID (23295) 打开的文件 {#list-open-files-for-process-id}

```sh
lsof -p 23295
```

### 查询指定目录下被进程开启的文件（使用 +D 递归目录） {#list-open-files-under-directory}

```sh
lsof +d mydir1/
```

## 终止进程 {#terminate-linux-processes}

### 杀死指定 PID 的进程 (PID 为 Process ID) {#kill-process-by-pid}

```sh
kill PID
```

### 杀死相关进程 {#kill-related-processes}

```sh
kill -9 3434
```

### 杀死 job 工作 (job 为 job number) {#terminate-shell-job}

```sh
kill %job
```

## 进程监控 {#monitor-linux-processes}

### 查看系统中使用 CPU、使用内存最多的进程 {#list-top-cpu-memory-processes}

```sh
top
(->)P
```

输入 `top` 命令后，进入交互界面；接着输入字符命令后显示相应的进程状态：

* `P`：根据 CPU 使用百分比大小进行排序。
* `M`：根据驻留内存大小进行排序。
* `i`：使 top 不显示任何闲置或者僵死进程。

## 分析线程栈 {#analyze-thread-stacks}

使用命令 `pmap` 来输出进程内存的状况，可以用来分析线程堆栈：

```sh
pmap PID

ps -fe| grep redis
weber    13508 13070  0 08:14 pts/0    00:00:00 grep --color=auto redis
weber    29515     1  0  2013 ?        02:55:59 ./redis-server redis.conf

pmap 29515
29515:   ./redis-server redis.conf
08048000    768K r-x--  /home/weber/soft/redis-2.6.16/src/redis-server
08108000      4K r----  /home/weber/soft/redis-2.6.16/src/redis-server
08109000     12K rw---  /home/weber/soft/redis-2.6.16/src/redis-server
```

## 综合运用 {#combined-process-management-examples}

### 将用户 colin115 下的所有进程名以 av\_ 开头的进程终止 {#terminate-user-processes-by-prefix}

```sh
ps -u colin115 |  awk '/av_/ {print "kill -9 " $1}' | sh
```

### 将用户 colin115 下所有进程名中包含 HOST 的进程终止 {#terminate-user-processes-by-name-pattern}

```sh
ps -fe| grep colin115|grep HOST |awk '{print $2}' | xargs kill -9;
```

## Linux 学习路径 {#linux-learning-path}

如果命令因权限不足而失败，先查看 [Linux 文件权限](/fe/linux/file-permission)；需要结合端口、连接和防火墙排查进程时，继续阅读 [Linux 网络操作](/fe/linux/network)。
