如何用systemctl管理systemd服务?

在Linux系统中,服务(Service)是运行在后台的应用程序,通常用于提供特定功能(如Web服务、数据库等),查询服务状态是系统管理的基础操作,无论是检查服务是否正常运行、排查故障,还是管理启动项,都需要掌握相关命令,以下是多种查询Linux服务的详细方法,适用于主流发行版(如Ubuntu、CentOS、Debian等)。
systemctl 是管理 systemd 系统的标准工具,支持大多数现代 Linux 发行版。
常用操作:

  1. 查看所有服务状态

    systemctl list-units --type=service  # 列出所有已加载的服务
    systemctl list-units --type=service --all  # 包含未激活的服务

    输出示例:

    UNIT          LOAD   ACTIVE SUB    DESCRIPTION  
    ssh.service   loaded active running OpenSSH server  
    nginx.service loaded active running Nginx web server
  2. 检查单个服务状态

    systemctl status nginx  # 替换 nginx 为目标服务名

    关键信息解读:

    • Active: active (running):服务正在运行。
    • Loaded: loaded (/usr/lib/systemd/system/nginx.service):服务配置文件路径。
    • 日志片段:显示最近的服务活动记录(如错误信息)。
  3. 过滤服务状态

    systemctl list-units --type=service --state=running  # 仅显示运行中的服务
    systemctl list-units --type=service --state=failed   # 仅显示启动失败的服务

使用 service 命令(兼容 SysVinit 系统)

适用于旧版系统(如 CentOS 6)或兼容性场景。
基本语法:

service <服务名> status  

示例:

service sshd status  # 检查 SSH 服务状态  

输出示例:

sshd (pid 1234) is running...  # 表示服务正在运行

通过进程检查服务

若服务未注册到 systemd/SysVinit,可直接检查进程:

  1. 使用 ps 命令

    ps aux | grep nginx  # 替换 nginx 为进程关键词

    输出示例:

    root      1234  0.0  0.1  12345  6789 ?        Ss   10:00   0:00 nginx: master process

    存在相关进程即表示服务在运行。

  2. 使用 pgrep 快速定位

    pgrep -l nginx  # 列出匹配进程的 PID 和名称

查看服务日志(故障排查关键)

日志是诊断服务问题的核心:

  1. 通过 journalctl(systemd 专用)

    journalctl -u nginx.service          # 查看 Nginx 服务的全部日志  
    journalctl -u nginx --since "2025-10-01" --until "2025-10-02"  # 按时间过滤  
    journalctl -u nginx -p err           # 仅显示错误日志
  2. 直接查看日志文件
    传统服务日志通常位于 /var/log/

    tail -f /var/log/nginx/error.log  # 实时监控 Nginx 错误日志

其他辅助方法

  1. 检查端口占用
    若服务通过端口通信(如 Web 服务默认 80 端口):

    ss -tulnp | grep :80  # 查看 80 端口的进程

    输出示例:

    tcp  LISTEN 0  128  *:80  *:*  users:(("nginx",pid=1234,fd=6))
  2. 验证配置文件
    服务启动失败可能是配置错误:

    nginx -t  # Nginx 配置语法检查(其他服务如 sshd -t)

常见问题与解决

  • 问题1:服务状态显示 failedinactive

    • 解决步骤:
      1. 查看日志:journalctl -u <服务名> -xe
      2. 检查依赖:systemctl list-dependencies <服务名>
      3. 重载配置:systemctl daemon-reload
  • 问题2:命令未找到(如 systemctl

    • 原因:系统使用旧版 init(如 SysVinit)。
    • 替代方案:
      • 使用 service 命令。
      • 直接检查进程或日志文件。
  • 问题3:服务已运行但无法访问

    • 检查防火墙:sudo ufw status(Ubuntu)或 firewall-cmd --list-ports(CentOS)。
    • 验证端口监听:ss -tulnp | grep <端口>

总结建议

场景 推荐命令
现代 Linux 发行版 systemctl status <服务名>
旧版系统(如 CentOS 6) service <服务名> status
服务无响应 检查进程 (ps aux \| grep <服务>) 和日志 (journalctl)
端口访问问题 结合 ssnetstat 验证端口

重要提示:

  • 操作需 root 权限(命令前加 sudo)。
  • 不同发行版路径可能差异(如日志位置),参考官方文档。
  • 定期备份配置文件和日志,避免误操作导致数据丢失。

通过以上方法,您可以高效查询和管理 Linux 服务,如需深入细节,请查阅发行版手册(如 Ubuntu Systemd 文档 或 Red Hat 服务管理指南)。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9391.html

(0)
酷番叔酷番叔
上一篇 2025年7月31日 06:50
下一篇 2025年7月31日 07:02

相关推荐

  • Telnet主要作用是什么?网络管理必知

    在Linux系统中,Telnet是一种历史悠久的网络协议工具,用于通过命令行远程连接其他主机或测试网络服务,注意:Telnet协议本身不加密数据传输,存在安全风险,仅建议用于本地测试或诊断,生产环境务必使用SSH等加密替代方案, 以下是详细操作指南:远程登录(已基本被SSH取代)网络服务诊断:测试端口连通性(如……

    2025年7月1日
    8500
  • Linux如何设置开机自启?具体实现步骤与方法有哪些?

    Linux开机自启是运维和开发中常见的需求,无论是服务程序、脚本任务还是自动化流程,都需要在系统启动时自动运行,本文将详细介绍Linux下实现开机自启的多种方法,涵盖主流的Systemd、传统init.d脚本、rc.local以及crontab等场景,并对比不同方法的适用场景和操作步骤,帮助用户根据实际需求选择……

    2025年9月16日
    4200
  • 如何全面查看你的Linux设备状态?

    Linux设备状态全面查看指南:通过lshw、lscpu等命令检查硬件信息;使用top/htop监控实时性能;df/du分析磁盘空间;ifconfig/netstat管理网络状态,掌握这些工具,快速诊断系统健康度。

    2025年7月31日
    8400
  • 如何使用ps命令快速解决线程问题?

    在Linux系统中,使用ps命令配合-T或-L选项(如ps -T -p )可以查看指定进程的线程信息,包括线程ID(LWP)和状态等关键细节。

    2025年6月21日
    8800
  • Linux系统如何设置root用户初始口令?

    在Linux系统中,root用户是拥有最高权限的管理员账户,能够执行所有系统操作,因此设置一个强健且安全的root口令至关重要,无论是新系统安装后的初始配置,还是日常使用中的安全维护,正确设置和管理root口令都是系统管理员的核心任务之一,本文将详细介绍Linux系统中设置root口令的多种方法、安全强化策略及……

    2025年9月29日
    4100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信