前言:
虽然 ps -ef 与 ps aux 命令都能查看进程运行情况,但两者之间还是有一些细致区别。
一、格式与输出
1、ps -ef/ps -af
- -e是显示所有进程,包括其他用户的进程。-a属于-e别名,功能相同。
- -f :显示更多的列信息,例如uid、pid、ppid、c、stime、tty、time和cmd
输出示例:
uid pid ppid c stime tty time cmd
root 2183 1 1 16:06 ? 00:01:03 java -jar example.jar
2、ps -aux
- a:显示所有用户进程,包括其它用户进程。
- u:以用户为主的格式显示,包含用户名和cpu、内存使用率信息。
- x:显示没有控制终端的进程(如后台进程)
输出示例:
user pid %cpu %mem vsz rss tty stat start time command
root 2183 1.0 0.5 123456 7890 ? ssl 16:06 0:01 java -jar example.jar
二、列内容区别
1、在 ps -ef 中,可以看到ppid列,它可以更好的帮助我们了解父子进程。
2、在 ps aux 中, 包含了%cpu和%mem列,它可以更好地帮助我们更直观的监控内容信息。
三、使用场景区别
1、ps -ef :查看所有进程及其详细信息,并显示父进程 id。
2、ps aux:重点在资源使用情况,像cpu和内存的占用率等等。
四、为什么两个命令中都有 “| grep”?
答:
1、 “|” 我们称为管道符。它的作用是在 unix/linux中将一个命令的输出连接到另一个命令的输出。通过管道符,我们可以连接多个命令,让数据在它们之间传递。
2、“grep” 的作用是过滤是 “java” 的相关进程。
举个例子:
假设我们有以下命令:echo -e "apple\nbanana\ncherry" | grep "an"
分析一下其中的意思:
- ①echo -e "apple\banana\ncherry" 会输出三个文本,分别是“apple”、“banana”、“ncherry”
- ②“|” 会将输出结果传递给 grep 命令
- ③grep "an" 会筛选出包含 “an” 的结果
即最终输出结果为:banana 。
可以看到,grep 命令 相当于sql中的模糊查询。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论