登录
首页 >  文章 >  linux

Linux查看开启服务命令详解

时间:2026-04-15 15:01:31 106浏览 收藏

想精准掌握Linux系统中哪些服务正在运行、为何异常或如何排查故障?本文深入解析systemctl核心命令的正确用法——从避免常见误区(如漏加--type=service导致信息杂乱)到精准筛选运行中服务(--state=running)、区分“已启用”与“真在跑”(is-enabled vs is-active),再到结合journalctl深挖日志细节(跨boot查询、定位crash原因),并教你读懂systemctl status中Loaded、Active、Process等关键字段背后的真相,助你告别ps grep式盲查,真正用好systemd状态管理逻辑高效运维。

linux怎么查看已开启服务_linux查询systemd运行状态【整理】

systemctl list-units --type=service 显示所有服务状态

这是最直接查当前运行中服务的命令,systemctl 默认只显示已加载且处于活跃(active)或失败(failed)状态的服务,不会列出被禁用但已安装的服务。

常见错误是只跑 systemctl list-units 不加 --type=service,结果混着 sockets、timers 一堆非服务项,眼花缭乱。加了类型过滤后才干净。

  • --state=running 可进一步缩小到真正正在运行的(排除 inactive 但 loaded 的)
  • --all 会显示 loaded 但 inactive 的服务(比如刚装好还没 start 过的)
  • 注意:active (running) 表示进程在跑;active (exited) 是那种一次性服务(如 rc-local.service),执行完就退出,也算“活跃”

systemctl is-active 和 systemctl is-enabled 判断单个服务

查某个服务是否正在运行,别用 ps aux | grep xxx —— 容易漏掉 fork 后 daemonize 的进程,也绕过了 systemd 的状态管理逻辑。直接问 systemd 更准。

systemctl is-active nginx 返回 activeinactivefailedsystemctl is-enabled nginx 返回 enabled / disabled / static(后者表示不能 enable,但可被其他服务依赖触发)。

  • 脚本里做判断时,优先用 systemctl is-active --quiet nginx 配合 $?,比解析输出字符串更稳
  • is-enabled 不代表当前在运行,只说明开机是否自启;is-active 不代表开机自启,只反映此刻状态
  • 有些服务(如 ModemManager)默认 enabled 但实际不运行——它等硬件插入才启动,此时 is-activeinactive

journalctl -u 查服务日志时容易忽略的细节

光看 systemctl status ssh 只能看到最近几行摘要,真出问题得翻日志。但 journalctl -u ssh 默认只查本次 boot 的记录,机器重启过就看不到上次失败原因。

  • --all 才能查所有历史(包括早前 boot 的),但默认日志保留策略可能已删掉旧条目
  • -n 50 限制行数,不然一刷几百行根本没法定位;加 --since "2 hours ago" 比盲目翻更高效
  • 如果服务刚 crash,journalctl -u ssh --no-pager | tail -20 比交互式翻页更快看到 exit 原因
  • 注意:日志里出现 Failed with result 'exit-code' 说明进程自己退出了;'signal' 是被 kill 掉的,得查是不是 OOM 或手动 kill 过

systemctl status 输出里哪些字段真正有用

systemctl status docker 输出信息多,但真正该盯住的就几个地方:

  • Loaded: 后面的路径是否真实存在?如果显示 disabled 却又指向 /dev/null,说明服务文件被 mask 了(systemctl mask docker 导致)
  • Active: 看状态+时间,比如 active (running) since Mon 2024-04-01... —— “since” 时间异常久?可能服务卡死没响应,只是 systemd 还没标记为 failed
  • Process: 行末 PID 是否还在 ps 里?不在就说明进程崩了但 systemd 还没来得及更新状态(极短时间窗口)
  • 最后一段的 Hint: Some lines were ellipsized 是个信号:日志被截断了,必须用 journalctl -u docker -n 100 补全

服务状态不是非黑即白,activating (auto-restart)deactivating 这类中间态持续太久,往往意味着依赖没拉起来或者 pre-start 脚本卡住——这时候看 systemctl list-dependencies docker 比瞎猜有用。

到这里,我们也就讲完了《Linux查看开启服务命令详解》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>