ps axj | grep 命令
这是 Linux/Unix 系统中最常用的进程查询组合命令 ,作用是列出系统所有进程,并精准过滤出你要找的进程。
1. 命令各部分含义
① ps axj
ps = 查看进程状态的基础命令
参数含义:
a:显示所有用户的进程(不单是当前用户)x:显示无终端关联的进程(守护进程 / 后台服务)j:用任务格式展示,包含父进程 ID、进程组 ID、会话 ID 等详细信息
② |
管道符:把左边命令的输出,作为右边命令的输入
③ grep
过滤工具:筛选包含指定关键词的行
2. 完整正确用法(必须加关键词)
grep 后面必须跟你要搜索的进程名称 / 关键词 ,否则命令不完整。
示例 1:搜索 Nginx 进程
bash
ps axj | grep nginx
示例 2:搜索 MySQL 进程
bash
ps axj | grep mysql
3. 输出结果说明
bash
ps axj | grep test
执行后会显示类似内容:
bash
2021 2068 2068 1992 pts/1 2068 S+ 0 0:00 ./test
1888 2107 2106 1859 pts/0 2106 R+ 0 0:00 grep --color=auto test
- 最后一行是
grep自身进程,不是目标服务进程,可忽略 - 前面的行就是你要找的真实进程
4. 优化(推荐):过滤掉 grep 自身进程
bash
ps axj | grep test | grep -v grep
-v = 反向匹配,排除包含 grep 的行
总结
ps axj:列出系统所有进程 + 详细任务信息| grep 关键词:精准筛选目标进程- 完整用法:
ps axj | grep 进程名 - 优化用法:
ps axj | grep 进程名 | grep -v grep
什么是grep自身进程
执行
ps axj | grep test2021 2068 2068 1992 pts/1 2068 S+ 0 0:00 ./test
1888 2107 2106 1859 pts/0 2106 R+ 0 0:00 grep --color=auto test
第2行是什么?
这行输出不是你要找的 test 进程 ,而是你刚才执行的 grep 命令自己,是系统的正常现象,完全不用管。
1. 这行到底是什么?
plaintext
1888 2107 2106 1859 pts/0 2106 R+ 0 0:00 grep --color=auto test
拆解开:
- grep:这是你执行的过滤命令本身
- --color=auto test :搜索的关键词是
test - R+:表示这个 grep 正在运行、瞬间执行完就消失
2. 为什么会出现它?
因为执行:
bash
ps axj | grep test
系统在执行时:
- 先运行
ps axj列出所有进程 - 再运行
grep test去过滤 - grep 自己也会变成一个进程,所以也会被 ps 列出来
- 因为它包含
test关键词,就把自己也匹配到了
3.怎么去掉这行干扰?
加一句 排除 grep 自身 即可:
bash
ps axj | grep test | grep -v grep
这样输出就只剩下真正的 test 进程,干净清爽。
which命令
bash
which 命令名
示例:
which grep
which ps
which ls
which python
bash
[root@iv-yebv3uyg3kbw80fb2oiv ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
[root@iv-yebv3uyg3kbw80fb2oiv ~]# which ll
alias ll='ls -l --color=auto'
/usr/bin/ls
[root@iv-yebv3uyg3kbw80fb2oiv ~]# which g++
/opt/rh/devtoolset-7/root/usr/bin/g++
[root@iv-yebv3uyg3kbw80fb2oiv ~]#
它会告诉你这个命令在哪个目录,比如:
/usr/bin/grep