如何用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如何安装配置SFTP服务器?

    在Linux系统中,SFTP(SSH File Transfer Protocol)是一种基于SSH的安全文件传输协议,通过加密传输数据保障文件传输的安全性,广泛应用于服务器文件管理、数据备份等场景,本文将以主流Linux发行版(Ubuntu/Debian、CentOS/RHEL)为例,详细讲解SFTP服务器的……

    2025年10月6日
    10300
  • Linux脚本中如何实现延时操作的具体方法?

    在Linux脚本开发中,延时操作是常见需求,无论是等待进程完成、控制脚本执行节奏,还是实现定时任务,都需要灵活运用延时技术,Linux脚本中实现延时的方法多样,从基础的命令行工具到高级的脚本逻辑,每种方法都有其适用场景和特点,本文将详细介绍几种主流的延时实现方式,包括语法、示例、优缺点及适用场景,帮助开发者根据……

    2025年9月18日
    9100
  • Linux酒吧消费如何?人均价格与服务体验值不值?

    Linux酒吧作为一种融合科技文化与社交体验的特色消费场所,近年来在年轻群体尤其是科技爱好者、程序员及极客文化追随者中逐渐兴起,这类酒吧以Linux操作系统及其背后的开源文化为灵感内核,通过环境设计、饮品命名、主题活动等元素构建独特的消费场景,让消费者在享受酒水与服务的同时,沉浸式感受极客文化的魅力,以下从环境……

    2025年9月30日
    11200
  • 如何用u盘安装kali linux

    下载kali iso镜像到U盘,用工具如Rufus制作启动盘,插入电脑从

    2025年8月16日
    10800
  • 如何安全高效管理Linux用户?

    创建新用户基础创建命令sudo adduser username # 交互式创建(推荐)或sudo useradd -m username # 非交互式创建(需手动设置密码)-m 参数:自动创建用户家目录(/home/username),推荐 adduser:自动提示设置密码、全名等信息,适合新手,设置密码su……

    2025年8月4日
    10800

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信