跳转至

10. 服务管理与进程控制

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


10.1 前提条件

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

💡 提示:Systemd 是 RHEL 9 默认的服务管理器,支持单元文件和依赖管理。在 RHEL 10 中,Systemd 增强了对容器集成和更细粒度的资源控制(如 cgroups v2 默认启用)。


10.2 服务管理

10.2.1 创建 Systemd 服务单元

  • 创建自定义服务:

    vim /etc/systemd/system/myservice.service  # 创建服务单元文件
    # 示例内容:
    [Unit]
    Description=My Custom Service
    After=network.target
    
    [Service]
    ExecStart=/usr/bin/my_script.sh
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    

  • 重载并启用服务:

    systemctl daemon-reload  # 重载 Systemd 配置
    systemctl enable --now myservice  # 启用并启动服务
    

检查点systemctl status myservice 显示 active(running)。

10.2.2 配置开机自启

  • 启用服务:
    systemctl enable sshd  # 设置 sshd 开机自启
    systemctl enable chronyd  # 设置 chronyd 开机自启
    

🧠 知识点enable 链接单元到目标(如 multi-user.target)。查看:systemctl is-enabled sshd

10.2.3 运行目标管理

  • 查看当前运行目标:

    systemctl get-default  # 显示默认目标(如 graphical.target)
    

  • 切换运行目标:

    systemctl set-default multi-user.target  # 设置为命令行模式
    systemctl isolate rescue.target  # 切换到救援模式
    

💡 提示:运行目标类似于 SysV runlevels。生产环境优先 multi-user.target。


10.3 进程管理

10.3.1 进程监控

  • 查看进程:
    ps aux  # 显示所有进程
    top  # 交互式监控(按 q 退出)
    htop  # 增强版(需安装 dnf install -y htop)
    

10.3.2 终止进程

  • 终止进程:
    kill <pid>  # 优雅终止(信号 15)
    kill -9 <pid>  # 强制终止(信号 9,慎用)
    pkill -f process_name  # 根据名称终止
    

10.3.3 调整优先级

  • 调整 nice 值:
    nice -n 10 command  # 以 nice 10 运行命令(低优先级)
    renice -n -5 <pid>  # 提高现有进程优先级(需 root)
    

检查点ps -eo pid,nice,comm 查看优先级。

🧠 知识点:nice 值范围 -20(高)到 19(低)。在 RHEL 10 中,进程管理可能集成更多 cgroup 限制,提升资源隔离。


10.4 日志管理

10.4.1 查看日志

  • 使用 journalctl:
    journalctl -u sshd  # 查看 sshd 服务日志
    journalctl -f  # 实时跟踪系统日志
    journalctl --since "1 hour ago" -u chronyd  # 查看最近 1 小时 chronyd 日志
    

10.4.2 清理日志

  • 清理旧日志:
    journalctl --vacuum-time=7d  # 清理 7 天前日志
    journalctl --vacuum-size=100M  # 限制日志大小为 100M
    

💡 提示:配置 /etc/systemd/journald.conf 自定义日志策略。

10.4.3 配置远程日志

  • 编辑 rsyslog 配置:

    vim /etc/rsyslog.conf
    # 添加:
    *.* @192.168.1.200:514  # 发送所有日志到远程服务器
    

  • 重启 rsyslog:

    systemctl restart rsyslog
    

检查点logger "Test log" 发送测试日志,远程服务器查看。


10.5 常见问题与排查

🔍 故障排查

  • 问题 1:服务启动失败
    解决systemctl status <service> 检查错误,或 journalctl -u <service> 查看日志。

  • 问题 2:自定义服务不运行
    解决:检查单元文件名或配置文件(/etc/systemd/system/)。

  • 问题 3:进程占用高
    解决:使用 htoptop 查找高 CPU 进程,必要时终止(kill -9)。

  • 问题 4:日志清理失败
    解决:确认是否有 root 权限(sudo journalctl --vacuum-time=7d)。


10.6 实践任务

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

检查点:服务运行正常,进程可控,日志发送成功。


10.7 自测问题

  • 问题 1:如何查看当前默认运行目标?
    答案systemctl get-default

  • 问题 2:如何终止特定进程?
    答案kill <pid>kill -9 <pid>(强制终止,慎用)。

  • 问题 3:如何查看最近 1 小时的 sshd 日志?
    答案journalctl -u sshd --since "1 hour ago"


🧾 总结
本章完整介绍了 RHEL 9 服务管理和进程控制的核心操作,包括 Systemd 配置、进程监控和日志管理。掌握这些技能可确保系统稳定运行,为后续内核管理与安全加固提供高效工具支持。