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

相关推荐

  • 你的临时IP配置重启失效了吗?

    在Linux系统中配置IP地址是网络管理的基础操作,无论是搭建服务器、连接互联网还是调试网络环境都至关重要,以下是几种常用方法,涵盖临时配置与永久配置,操作前请确保具备管理员权限(使用sudo或切换root用户),适用于快速测试或临时网络调整,使用ip或ifconfig命令(部分新系统需安装net-tools……

    2025年7月5日
    3100
  • Linux系统时间如何更改?操作步骤与方法有哪些?

    在Linux系统中,时间管理涉及“系统时间”(由内核维护,软件运行使用)和“硬件时间”(由主板BIOS/UEFI保存,关机后仍保留)两个概念,两者可能不同步,需根据需求调整,以下是更改Linux系统时间的详细方法,涵盖命令行和图形界面操作,并包含时区设置及常见注意事项,使用timedatectl命令(推荐,适用……

    2025年8月30日
    1200
  • linux如何打开编辑器

    Linux中,可通过命令如vim、nano等打开编辑器,例如输入

    2025年8月10日
    2200
  • Linux系统IP冲突怎么办?,快速解决Linux IP地址冲突,如何检测Linux的IP冲突?

    使用arp-scan工具(推荐)arp-scan通过主动发送ARP请求检测IP冲突,结果精准可靠,步骤:安装工具(Debian/Ubuntu为例):sudo apt update && sudo apt install arp-scan扫描本地网络(替换eth0为你的网卡名):sudo arp……

    2025年6月24日
    3600
  • NAT切换如何避免业务中断?

    在Linux系统中直接修改iptables/nftables规则(尤其是NAT表)会导致:现有连接中断:已建立的TCP连接和UDP会话因规则刷新而丢失,业务抖动:在线用户感知到网络闪断,影响实时应用(如视频会议、金融交易),状态不一致:conntrack表记录与NAT规则不匹配,引发数据包丢弃,平滑生效的核心原……

    2025年7月24日
    3100

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信