商城首页欢迎来到中国正版软件门户

您的位置:首页 >Linux怎么查看服务状态_Linux systemctl查看服务运行状态【基础】

Linux怎么查看服务状态_Linux systemctl查看服务运行状态【基础】

  发布于2026-05-20 阅读(0)

扫一扫,手机访问

在Linux系统管理中,确认一个服务的真实状态是日常运维的基础。你可能会遇到服务没有响应、启动失败,或者单纯想确认它是否在后台安静运行。别担心,Linux提供了多种清晰、高效的命令来帮你摸清服务的“底细”。

Linux怎么查看服务状态_Linux systemctl查看服务运行状态【基础】

一、使用systemctl status查看指定服务详细状态

想全面了解一个服务的健康状况?systemctl status是你的首选。它就像给服务做了一次快速体检,不仅能告诉你它是生是死,还能看到它的“心跳”(进程ID)、“病历”(最近日志)以及“社会关系”(依赖项)。

操作很简单:打开终端,输入 systemctl status 服务名,比如 systemctl status nginx

输出信息里,关键看这几处:

Active: 字段是核心。如果显示 active (running),恭喜,服务正在欢快地运行。如果是 inactive (dead),说明它目前处于停止状态。而如果看到 failed,那就意味着最近一次启动尝试失败了,需要进一步排查。

Loaded: 字段后面的括号内容揭示了它的开机行为。enabled 表示已设置为开机自启,disabled 则表示没有。查看完毕后,按一下 q 键就能退出这个交互式状态页面。

二、使用systemctl is-active快速获取服务当前运行状态

有时候你不需要那么详细的报告,只想快速得到一个“是”或“否”的答案。比如在写自动化脚本时,systemctl is-active 命令就特别合适。它非常“高冷”,只返回一个简单的状态词,不附带任何日志或细节。

用法:执行 systemctl is-active 服务名,例如 systemctl is-active sshd

它通常只返回三个结果之一:activeinactivefailed。如果你想让它更安静,并且通过脚本的退出码($?)来判断,可以加上 --quiet 参数。

三、列出所有正在运行的服务

如果你不想一个个服务去查,而是想看看当前系统里到底有哪些“活着的”服务,来个全局掌控,这个命令就派上用场了。它能帮你过滤掉那些虽然加载了但没运行的服务,非常适合做批量巡检。

执行命令:systemctl list-units --type=service --state=running

输出列表里,每一个都是状态为 active (running) 的服务,包含了服务名、加载状态、描述和激活时间。如果列表太长,可以用 -n 参数限制行数,比如 -n 20 就只显示前20条。

四、查看服务开机自启状态

这里有个常见的理解误区:把“当前是否运行”和“是否开机自启”混为一谈。它们是两回事。一个服务现在可以运行着但并未设置开机启动,反之亦然。systemctl is-enabled 命令就是专门用来检查后者的。

执行:systemctl is-enabled 服务名,例如 systemctl is-enabled cron

返回值通常有三种:

enabled:明确设置了开机自启。
disabled:没有设置开机自启。
static:这个状态稍微特殊点,表示这个服务本身不能被直接启用(enable),但它可能作为其他服务的依赖,在系统启动的某个阶段被自动激活。像 sysinit.target 这类基础单元就属于这种类型。

五、结合journalctl查看服务历史日志

systemctl status 显示的摘要信息不足以定位问题时,你就需要求助更完整的“黑匣子”记录了——系统日志。journalctl 命令可以按服务单元筛选日志,尤其是服务崩溃前最后的输出,往往是破案的关键。

基本用法是:journalctl -u 服务名 --since “时间范围”。例如,想查看docker服务过去一小时的日志,就用 journalctl -u docker --since “1 hour ago”

几个实用技巧:

如果想实时盯着日志滚动更新,加上 -f 参数(follow模式):journalctl -u 服务名 -f
如果服务刚刚出问题,想快速看最后几行,可以组合使用:journalctl -u 服务名 --no-pager | tail -30,这样就能直接提取末尾30行关键信息。
在日志中,注意寻找这些关键字:如果出现 Failed with result ‘exit-code’,通常意味着服务进程自己主动退出了(返回了非零退出码)。如果出现 ‘signal’(比如 SIGKILL, SIGSEGV),则暗示进程是被外部信号杀掉的,可能是内存不足被OOM Killer终结,也可能是被人手动 kill 了。

本文转载于:https://www.php.cn/faq/2474763.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注