linux查看进程状态

哎呀,说到检查Linux系统的进程状态,其实让我想起了以前的很多事件。
我记得有一次,当我在公司服务器上时,CPU使用率突然增加。
我立即打开终端查看是哪个进程造成了麻烦。

首先,我使用了ps命令,老老实实地输入了ps -ef。
嘿嘿,这东西可真宽泛啊。
所有的程序都被演示了,这让我头晕目眩。
记得当时有上百道工序,我花了很大力气才一一完成。

然后我再次尝试了 top 命令。
这个东西挺有趣的,可以动态显示进程的状态。
我查看了那里CPU占用率高的进程,心想这次终于找到罪魁祸首了。
当时服务器负载非常高,内存和CPU都非常紧张。

后来发现htop命令还不错。
界面比上面漂亮很多,操作也很方便。
我直接按F1 调出帮助菜单。
乍一看,我发现我还可以通过按不同的键来过滤进程。
这一次,进程更容易找到。

同事的程序再一次卡住了,我们使用 pydstat 命令来监控它的 CPU 和内存使用情况。
这东西还是挺专业的。
我们输入pidstat -p 1 2 3 4 5 ,看着屏幕,查看进程的各种指标,终于找到了问题所在。

确实,这些命令都有自己的好处,并且使用它们非常有趣。
但归根结底,你还是必须根据实际情况进行选择。
例如,如果您只想查看当前系统上正在运行哪些进程,请使用 ps;如果想实时监控进程的状态,可以使用top或者htop;如果您想深入了解进程的细节,Pystat 是合适的。
哎,这个Linux系统真是个宝,就是有点复杂。

如何在Linux中查看进程状态 Linux ps aux命令详解

说白了,Linux就是靠ps、grep和top的组合来检查进程状态的。
如何使用取决于场景。

扩展一下,ps aux 用途广泛,但它输出的信息很多。
我们先看几个关键字段:USER和PID是定位问题的基本盘。
例如,如果发现某个进程内存溢出(RSS持续飙升至1 00MB以上),可以直接使用PID将其杀死; 还有STAT字段,这个字段非常重要。
例如,如果看到大量的Z状态,则说明父进程没有正确回收子进程,必须回溯代码; 另外,ps -ef 查看进程树也很方便。
去年我们运行那个项目的时候,发现一个子进程异常。
我们依靠这个立即定位到祖先进程。
一开始我以为ps aux最全面,后来发现top在实时监控高负载进程方面更直观,尤其是按CPU排序(按P键),可以快速排除干扰项。

等等,还有一件事。
htop比top好一点,可以直接杀死进程,但是安装比较麻烦。
如果你觉得输入PID太烦人,可以尝试一下,不过一般系统默认是没有的。

最后提醒:使用 grep 进行过滤时,不要错过 grep 本身。
例如,要检查nginx,直接 ps aux | grep nginx 也会搜索自身。
需要添加 grep -v grep 来排除。