如何在Ubuntu上检查特定服务是否正在运行?


我们知道可以使用top命令打印所有在后台运行的进程。尽管top命令用于打印当前由Linux内核管理的进程或线程列表,但它仍然不是检查特定服务是否在后台运行的便捷方法。

为了理解如何检查特定服务是否正在运行,我们首先必须理解Linux中服务的实际含义。服务基本上是在后台持续运行的进程或进程组。

现在我们知道了什么是服务,接下来是了解我们将用来检查特定服务是否正在运行的不同命令。

第一个命令是Linux操作系统的**ps**命令。**ps**命令是“进程状态”的缩写,用于列出您Linux机器上当前正在运行的进程及其PID和不同的选项。

语法

ps ef | [ - options ]

让我们使用两个示例,首先我们将打印在您的Ubuntu机器上运行的所有进程,接下来我们将打印特定服务是否正在运行。

命令

ps ef

输出

UID   PID   PPID   C STIME   TTY   TIME CMD
 0     1     0 0 25Jun21 ??      19:53.44 /sbin/launchd
 0    56     1 0 25Jun21 ??       0:41.68 /usr/sbin/syslogd
 0    57     1 0 25Jun21 ??       0:59.28 /usr/libexec/UserEventAgent (System)

以上命令的输出非常庞大,所以我只打印了一部分,需要注意的是输出可能会有所不同。

命令

ps -ef | grep Terminal

以上命令将告诉我们特定服务是否在您的机器上运行。在上面的命令中,我正在检查终端服务是否正在运行。

输出

501 28604 1 0 Sun12PM ?? 2:43.95
/System/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal

501 45775 45479 0 9:31AM ttys000 0:00.01 grep Terminal

只有当您看到上面输出的CMD列中填入了命令时,才能确认该服务实际上正在运行。

另一种检查服务是否正在运行的方法是在上述命令中使用**aux**命令代替**-ef**标志。

命令

ps aux | grep Terminal

输出

immukul@192 linux-questions-code % ps aux | grep Terminal
immukul 28604 3.3 0.7 5429432 57080 ?? S Sun12PM 2:46.14
/System/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal

immukul 45869 0.0 0.0 4268300 520 s000 R+ 9:44AM 0:00.00 grep
Terminal

更新于:2021年7月29日

3K+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告