当前位置:首页 > Linux > 正文

Linux怎样列出所有服务?

要查看Linux所有服务,可通过以下方法:,1. 使用 systemctl list-units --type=service(Systemd系统),2. 执行 service --status-all(SysVinit系统),3. 检查 /etc/init.d/ 目录中的服务脚本

使用 systemctl 命令(推荐,适用于 systemd 系统)

适用系统:Ubuntu 16.04+、CentOS 7+、Fedora、Debian 9+ 等较新发行版。
步骤

  1. 查看所有服务状态(含运行/未运行):

    systemctl list-units --type=service --all
    • LOAD:配置是否加载成功
    • ACTIVE:运行状态(active为运行中)
    • SUB:详细状态(如runningexited
  2. 仅查看运行中的服务

    systemctl list-units --type=service --state=running
  3. 查看服务详情(如SSH):

    systemctl status sshd

优点:信息全面,支持过滤;缺点:旧版系统(如CentOS 6)不适用。

Linux怎样列出所有服务?  第1张


使用 service 命令(兼容 SysVinit 和 systemd)

适用系统:新旧版本均支持,但信息较简略。
步骤

service --status-all
  • [ + ]:服务正在运行
  • [ - ]:服务已停止
  • [ ? ]:状态未知

注意:部分系统需安装 sysvinit-utils 包。


检查 /etc/init.d/ 目录(传统 SysVinit 系统)

适用系统:CentOS 6、Debian 7 等旧版本。
步骤

ls /etc/init.d/

此目录存放服务管理脚本,但仅列出可管理服务,不显示实时状态


通过进程查看运行中的服务

适用场景:确认哪些服务正在消耗资源。

  1. 结合 ps 命令
    ps aux | grep -E '[s]bin/|usr/bin/'  # 过滤系统进程
  2. 使用 pstree(显示进程树):
    pstree -p  # 树状结构展示进程关系

查看网络服务

适用场景:排查端口占用或网络服务。

  1. ss 命令(推荐):

    ss -tulnp  # 显示监听端口及对应进程
    • -t:TCP端口
    • -u:UDP端口
    • -l:仅监听状态
    • -n:显示端口号(非服务名)
    • -p:显示进程信息
  2. netstat 命令(部分系统需安装):

    netstat -tulnp

其他工具补充

  1. chkconfig 命令(CentOS 6):
    chkconfig --list  # 查看服务启动级别配置
  2. 图形化工具
    • systemd-gui(systemd系统)
    • rcconf(Debian/Ubuntu)

总结与建议

场景 推荐命令
新系统(如Ubuntu 22.04) systemctl list-units --type=service
兼容新旧系统 service --status-all
检查端口占用 ss -tulnp
旧系统(如CentOS 6) chkconfig --list + /etc/init.d/

注意事项

  • 操作需 root 权限(命令前加 sudo)。
  • 谨慎停止服务:部分服务(如sshdnetwork)停用可能导致系统异常。
  • 学习服务作用:使用 man systemctl 或查阅文档(如systemd.unit 官方手册)。

引用说明
本文参考 Linux 官方文档(systemd 手册)、IBM Developer 的 Linux 服务管理指南,以及 Ubuntu Manpage 的 systemctlss 命令说明,内容基于通用实践,具体命令请以系统版本为准。

0