Skip to content

11. 服务管理与进程控制

本章节指导在 RHEL 8.10(主机名 ZSLinux)上使用 SecureCRT 进行服务管理和进程控制,配合 SecureFX 传输配置文件。内容涵盖 Systemd 服务管理(创建服务、配置开机自启、运行目标)、进程管理(监控、终止、优先级调整)和日志管理(查看、清理日志),以 sshdchronyd 为例,全面实用,适合初学者快速掌握和运维人员日常维护。所有操作在 ZSLinux 环境中测试,确保实验一致性。

11.1 前提条件

  • RHEL 8.10 已安装(参考第 1 章),主机名设置为 ZSLinux.
  • 使用 SecureCRT 登录(SSH2 协议,端口 2222,参考第 6 章).
  • 使用 SecureFX 传输文件(SFTP 协议).
  • 具有 root 或 sudo 权限.
  • sshdchronyd 服务已安装(参考第 3 章和第 6 章).
  • EPEL 仓库已启用(参考第 7 章,dnf install -y epel-release).

11.2 服务管理

11.2.1 创建 Systemd 服务单元

  • 创建自定义服务:
    bash
    vim /etc/systemd/system/myservice.service  # 创建自定义服务单元文件
    # 添加以下内容:
    [Unit]
    Description=My Custom Service
    After=network.target
    [Service]
    ExecStart=/usr/bin/custom-script.sh
    Restart=always
    [Install]
    WantedBy=multi-user.target
    systemctl daemon-reload  # 重新加载 Systemd 配置
    systemctl start myservice  # 启动自定义服务

11.2.2 配置服务开机自启

  • 启用服务开机自启:
    bash
    systemctl enable --now sshd  # 启用并立即启动 SSH 服务
    systemctl enable chronyd  # 启用时间同步服务开机自启

11.2.3 管理默认运行目标

  • 查看当前默认目标:
    bash
    systemctl get-default  # 查看默认运行目标(如 graphical.target 或 multi-user.target)
  • 设置默认目标为文本模式:
    bash
    systemctl set-default multi-user.target  # 设置为多用户文本模式
  • 设置默认目标为图形模式:
    bash
    systemctl set-default graphical.target  # 设置为图形界面模式

11.2.4 配置服务依赖

  • 设置服务依赖(确保 myservicenetwork.target 后启动):
    bash
    vim /etc/systemd/system/myservice.service  # 编辑服务文件
    # 确认 [Unit] 段包含:
    After=network.target
    systemctl daemon-reload  # 重新加载配置

11.3 进程管理

  • 安装 htop(交互式进程监控工具):
    bash
    dnf install -y htop  # 安装 htop(需 EPEL 仓库)
  • 监控进程:
    bash
    ps aux  # 显示所有进程详细信息
    top  # 实时监控系统资源
    htop  # 交互式进程监控
  • 终止进程:
    bash
    kill 1234  # 向进程 ID 1234 发送 SIGTERM 信号
    kill -9 1234  # 强制终止进程 ID 1234(慎用)
    killall httpd  # 按名称终止所有 httpd 进程
  • 配置进程优先级:
    bash
    nice -n 10 /usr/bin/custom-script.sh  # 以优先级 10 运行脚本
    renice 10 -p 1234  # 修改进程 ID 1234 的优先级

11.4 日志管理

  • 查看系统日志:
    bash
    journalctl -xe  # 显示系统日志,定位到末尾并带扩展信息
    journalctl -u sshd  # 查看 SSH 服务日志
    journalctl --since "1 hour ago"  # 查看最近 1 小时的日志
  • 清理旧日志:
    bash
    journalctl --vacuum-time=7d  # 清理 7 天前的日志
  • 配置远程日志收集(示例使用 rsyslog):
    bash
    dnf install -y rsyslog  # 安装 rsyslog 服务
    vim /etc/rsyslog.conf  # 编辑 rsyslog 配置文件
    # 添加以下行以发送日志到远程服务器(假设为 192.168.1.200:514):
    *.* @192.168.1.200:514
    systemctl restart rsyslog  # 重启 rsyslog 服务

11.5 验证

  • 验证服务状态:
    bash
    systemctl is-active sshd  # 检查 SSH 服务是否运行
    systemctl is-active chronyd  # 检查时间同步服务是否运行
    # 应显示 active
    systemctl is-enabled sshd  # 检查 SSH 服务是否开机自启
    # 应显示 enabled
  • 验证进程运行:
    bash
    ps aux | grep httpd  # 检查 httpd 进程是否运行
    htop  # 使用 htop 监控进程状态
  • 验证日志:
    bash
    journalctl -u sshd --since "1 hour ago"  # 检查最近 1 小时的 SSH 日志
    journalctl --disk-usage  # 检查日志占用空间
  • 测试 SSH 连接:
    bash
    ssh -p 2222 testuser@ZSLinux  # 测试 SSH 连接(参考第 6 章)
  • 常见问题:
    • 服务无法启动:检查日志(journalctl -u 服务名)或配置文件(/etc/systemd/system/)。
    • 进程占用高:使用 htoptop 查找高 CPU 进程,必要时终止(kill -9)。
    • 日志清理失败:确认是否有 root 权限(sudo journalctl --vacuum-time=7d)。

11.6 实践任务

  1. 使用 SecureCRT 登录 ZSLinux,启用并启动 sshd 服务,验证其状态。
  2. 创建自定义服务 myservice,确保其在网络服务后启动。
  3. 使用 htop 监控进程,终止一个模拟的高 CPU 进程。
  4. 配置 rsyslog 发送日志到远程服务器(192.168.1.200:514)。

11.7 自测问题

  • 问题:如何查看当前默认运行目标?
    • 答案systemctl get-default
  • 问题:如何终止特定进程?
    • 答案kill <pid>kill -9 <pid>(强制终止,慎用)。
  • 问题:如何查看最近 1 小时的 sshd 日志?
    • 答案journalctl -u sshd --since "1 hour ago"

Released under the MIT License.