Skip to content

第13章:系统服务管理

13.1 服务管理命令(systemctl)

systemctl命令

  • 功能:管理系统服务(systemd系统)
  • 常用子命令:
    • start:启动服务
    • stop:停止服务
    • restart:重启服务
    • reload:重新加载服务配置
    • status:查看服务状态
    • enable:设置服务开机自启
    • disable:禁用服务开机自启
    • list-units:查看所有服务单元
    • list-enabled:查看已启用的服务
    • list-disabled:查看已禁用的服务

示例:管理SSH服务

  • 启动SSH服务:

    bash
    $ sudo systemctl start sshd
  • 停止SSH服务:

    bash
    $ sudo systemctl stop sshd
  • 重启SSH服务:

    bash
    $ sudo systemctl restart sshd
  • 查看SSH服务状态:

    bash
    $ sudo systemctl status sshd
  • 重新加载SSH服务配置:

    bash
    $ sudo systemctl reload sshd

13.2 设置服务开机自启

启用服务开机自启

  • 格式:sudo systemctl enable 服务名
  • 示例:
    bash
    $ sudo systemctl enable sshd  # 启用SSH服务开机自启
    $ sudo systemctl enable nginx  # 启用Nginx服务开机自启

禁用服务开机自启

  • 格式:sudo systemctl disable 服务名
  • 示例:
    bash
    $ sudo systemctl disable sshd  # 禁用SSH服务开机自启

查看服务自启状态

  • 查看所有已启用的服务:

    bash
    $ sudo systemctl list-enabled
  • 查看所有已禁用的服务:

    bash
    $ sudo systemctl list-disabled
  • 查看特定服务的自启状态:

    bash
    $ sudo systemctl is-enabled sshd

13.3 查看服务状态,排查服务启动失败问题

查看服务状态

  • 格式:sudo systemctl status 服务名
  • 示例:
    bash
    $ sudo systemctl status sshd

服务状态解读

  • active (running):服务正在运行
  • active (exited):服务已执行完成
  • active (waiting):服务正在等待某个事件
  • inactive (dead):服务未运行
  • failed:服务启动失败

排查服务启动失败问题

  1. 查看服务状态和错误信息

    bash
    $ sudo systemctl status 服务名
  2. 查看服务日志

    bash
    $ sudo journalctl -u 服务名
    $ sudo journalctl -u 服务名 -n 50  # 查看最近50行日志
    $ sudo journalctl -u 服务名 -f  # 实时查看日志
  3. 检查服务配置文件

    • 大多数服务的配置文件位于 /etc 目录下
    • 例如:Nginx配置文件位于 /etc/nginx/nginx.conf
  4. 检查端口占用

    bash
    $ sudo netstat -tlnp | grep 端口号
    $ sudo ss -tlnp | grep 端口号
  5. 检查依赖服务

    bash
    $ sudo systemctl list-dependencies 服务名
  6. 尝试手动启动服务并查看详细输出

    bash
    $ sudo /usr/sbin/服务名 -v

常见服务启动失败原因

  • 配置文件错误:配置文件格式不正确或参数错误
  • 端口被占用:服务需要的端口已被其他程序占用
  • 依赖服务未启动:服务依赖的其他服务未运行
  • 权限问题:服务没有足够的权限访问某些文件或目录
  • 资源不足:系统内存或磁盘空间不足

实战练习:服务管理

  1. 查看SSH服务状态:

    bash
    $ sudo systemctl status sshd
  2. 重启SSH服务:

    bash
    $ sudo systemctl restart sshd
  3. 设置SSH服务开机自启:

    bash
    $ sudo systemctl enable sshd
  4. 查看已启用的服务:

    bash
    $ sudo systemctl list-enabled
  5. 查看所有服务状态:

    bash
    $ sudo systemctl list-units --type=service
  6. 模拟服务启动失败排查:

    • 尝试启动一个不存在的服务:
      bash
      $ sudo systemctl start non-existent-service
    • 查看错误信息:
      bash
      $ sudo systemctl status non-existent-service
  7. 查看系统日志:

    bash
    $ sudo journalctl -n 100

通过学习系统服务管理,你将能够管理Linux系统中的各种服务,确保服务的正常运行,及时排查和解决服务启动失败的问题,保证系统的稳定性。

© 2026 编程马·菜鸟教程 版权所有