使用 ps 或 systemd 简化进程管理
作为一名支持工程师,我最不喜欢的活动之一就是试图筛选ps
命令的碎片堆。不可避免地,Java 进程会出错并卡在我需要打开以重新启动服务的端口上。服务会显示为up,但没有任何功能。这种情况让初级技术人员感到困惑,我被要求通过找到卡住的进程并终止它来纠正很多次。有时您可能还需要查看某个特定进程是否正在运行,或者确定某个进程是否产生了子进程。在这些情况下,了解控制组将大有帮助。从基本层面上讲,控制组根据父级组织进程,然后将进程组织成层次结构。
在这里,我们将介绍两种改进ps
大多数人使用的标准命令的方法。我知道许多人将 配对ps
,grep
并且像山核桃派和 Noah's Mill 一样,我完全赞同这种做法。我还鼓励您查看以下两种方法,因为它们可以使理解流程层次结构变得更容易一些。
方法一
第一种方法是ps
启用进程树的标准命令。运行此命令时:
[root@fed31 ~]# ps xawf -eo pid,user,cgroup,args
结果可能如下:
由于输出内容过于冗长,因此我们对其进行了缩减。但是,使用此命令可以收到大量信息。从左到右,有 PID、USER、CGROUP 和 COMMAND。
我发现此输出是查看哪个进程属于哪个父作业的绝佳方式。它的格式也相当用户友好。通常,命令本身可能要输入很多内容,因此我建议设置 shell 别名。有关如何创建别名的更多信息,请参阅我关于此主题的文章。目前,类似这样的内容是合适的:
alias pscgroup='ps xawf -eo pid,user,cgroup,args'
方法二
我们将要研究的下一个选项是一个systemd
实用程序。在我看来,这种方法是查看哪个作业属于哪个父进程或所有者的更好方法。当您输入以下内容时:
[root@fed31 ~]# systemd-cgls
结果可能如下所示:
再次,由于输出较长,屏幕截图已缩短。在此版本中,您可以更轻松地查看哪个进程属于哪个用户,并且每个进程都将其子进程显示为信息子集。这种方法是一种非常简单的方法,可以查看进程的组织并快速找到所有权。
这两种查看过程的方法帮助我了解了什么拥有什么。希望您也会发现这些方法很有用!
[想要试用 Red Hat Enterprise Linux?立即免费下载。]