Appearance
11. 服务管理与进程控制
本章节指导在 RHEL 8.10(主机名 ZSLinux)上使用 SecureCRT 进行服务管理和进程控制,配合 SecureFX 传输配置文件。内容涵盖 Systemd 服务管理(创建服务、配置开机自启、运行目标)、进程管理(监控、终止、优先级调整)和日志管理(查看、清理日志),以 sshd 和 chronyd 为例,全面实用,适合初学者快速掌握和运维人员日常维护。所有操作在 ZSLinux 环境中测试,确保实验一致性。
11.1 前提条件
- RHEL 8.10 已安装(参考第 1 章),主机名设置为
ZSLinux. - 使用 SecureCRT 登录(SSH2 协议,端口 2222,参考第 6 章).
- 使用 SecureFX 传输文件(SFTP 协议).
- 具有 root 或 sudo 权限.
sshd和chronyd服务已安装(参考第 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 配置服务依赖
- 设置服务依赖(确保
myservice在network.target后启动):bashvim /etc/systemd/system/myservice.service # 编辑服务文件 # 确认 [Unit] 段包含: After=network.target systemctl daemon-reload # 重新加载配置
11.3 进程管理
- 安装
htop(交互式进程监控工具):bashdnf 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):bashdnf 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/)。 - 进程占用高:使用
htop或top查找高 CPU 进程,必要时终止(kill -9)。 - 日志清理失败:确认是否有 root 权限(
sudo journalctl --vacuum-time=7d)。
- 服务无法启动:检查日志(
11.6 实践任务
- 使用 SecureCRT 登录
ZSLinux,启用并启动sshd服务,验证其状态。 - 创建自定义服务
myservice,确保其在网络服务后启动。 - 使用
htop监控进程,终止一个模拟的高 CPU 进程。 - 配置
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"
- 答案:
