如何用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

相关推荐

  • Linux如何正确关闭进程?

    通过进程ID(PID)关闭进程查找目标进程的PID使用 ps 命令配合 grep 搜索:ps aux | grep "进程名"示例:关闭Firefox浏览器ps aux | grep firefox输出结果第二列为PID(如 12345),使用 pgrep 快速获取PID:pgrep fir……

    2025年7月5日
    13900
  • linux t进程如何处理

    nux 中终止进程可通过 kill 命令,后跟进程 ID,也可使用 `kill

    2025年8月18日
    15100
  • Linux如何查看系统cache的使用状态及占用信息?

    在Linux系统中,cache(缓存)是提升系统性能的关键机制,主要用于缓存频繁访问的数据,减少磁盘I/O和内存访问延迟,查看cache的使用情况有助于监控系统内存状态、诊断性能问题,例如判断内存是否被过度占用、是否存在内存泄漏等,Linux中查看cache的方法多样,可通过命令行工具、系统文件等途径实现,以下……

    2025年8月28日
    14200
  • linux如何用鼠标键盘

    Linux中,鼠标可点击图标、拖动窗口等操作,键盘用于

    2025年8月18日
    15900
  • 在Linux系统中如何实现中文输入?

    在Linux系统中输入中文是许多中文用户的基本需求,由于Linux系统本身默认使用英文界面,且输入法机制与Windows有所不同,因此需要通过特定的配置和安装输入法框架来实现中文输入,本文将详细介绍在Linux中输入中文的完整流程,包括输入法框架的选择、安装、配置,以及常见问题的解决方法,Linux中文输入的基……

    2025年10月6日
    12300

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信