在Linux系统运维中,进程与服务控制是保障系统稳定性和服务可用性的核心环节。本章将围绕进程识别-服务配置-故障排查主线,系统讲解进程管理的关键命令、服务控制工具及故障处理方法,为运维人员提供从基础操作到高级排障的完整技术框架。
进程识别是进行资源调度和故障定位的前提,需通过工具链建立进程PID、父进程关系及端口占用的关联视图。在识别进程后,可通过kill命令向进程发送信号实现精细化控制,其核心在于理解不同信号的作用机制与适用场景。
常用进程控制信号及操作示例如下表所示:
| 信号代号 | 信号名称 | 作用描述 | 典型应用场景 | 示例命令 |
|---|---|---|---|---|
| 1 | HUP | 重载配置文件,不中断服务 | 服务配置更新(如Nginx、Apache) | kill -HUP $(cat /var/run/nginx.pid) |
| 9 | KILL | 强制终止进程,无法捕获 | 僵尸进程清理、无响应进程终止 | kill -9 1234(终止PID 1234的进程) |
| 15 | TERM | 优雅终止进程,允许收尾操作(默认信号) | 正常服务停止,确保数据一致性 | kill 5678(向PID 5678发送TERM信号) |
注意事项:信号9(KILL)会强制终止进程,可能导致未保存数据丢失或资源泄漏,建议优先使用信号15(TERM)进行优雅终止;对于长期运行的服务(如数据库),应通过服务管理工具而非直接kill命令操作,以避免状态异常。
服务配置是实现系统自动化运维的关键,需掌握传统service命令与systemctl工具的差异,并理解systemd服务的底层机制。systemctl作为systemd体系的核心工具,提供了服务生命周期管理、开机自启配置等一体化功能,已成为主流Linux发行版的标准服务管理方式。
service与systemctl的核心差异:传统service命令基于SysVinit,仅支持start/stop/restart/status等基础操作,配置文件分散在/etc/init.d/;而systemctl基于systemd,支持并行启动、依赖管理、快照恢复等高级特性,服务定义文件(unit文件)统一存储于/usr/lib/systemd/system/或/etc/systemd/system/,支持自定义服务编写与重载。
systemctl常用操作及示例如下表所示:
| 操作命令 | 功能描述 | 示例场景 | 执行命令 |
|---|---|---|---|
| start | 启动服务 | 临时启用Nginx服务 | systemctl start nginx |
| stop | 停止服务 | 临时关闭SSH服务 | systemctl stop sshd |
| restart | 重启服务 | 应用Nginx配置变更 | systemctl restart nginx |
| enable | 设置开机自启 | 确保MySQL开机运行 | systemctl enable mysqld |
| disable | 禁用开机自启 | 禁止防火墙开机启动 | systemctl disable firewalld |
| status | 查看服务状态 | 诊断SSH服务异常 | systemctl status sshd |
| enable --now | 启动并设置开机自启 | 新安装服务一键配置 | systemctl enable --now nginx |
最佳实践:配置自定义服务时,需在unit文件中明确定义[Unit](依赖关系)、[Service](执行路径、启动类型、重启策略)和[Install](安装目标)三个核心区块,例如通过After=network.target确保服务在网络就绪后启动,通过Restart=on-failure实现故障自动恢复。
故障排查需结合进程状态监控、服务日志分析与信号控制工具,构建“状态诊断-日志定位-进程干预”的闭环处理流程。通过systemctl status可快速获取服务运行状态(如active/running、failed)及最近日志片段,结合journalctl -u 服务名 -p err筛选错误日志(如journalctl -u nginx -p err查看Nginx错误日志),可定位配置错误、资源耗尽等常见问题。对于无响应进程,可通过ss -tulnp定位占用异常端口的PID,再使用kill -9强制终止;对于配置错误导致的服务启动失败,可发送HUP信号(如kill -HUP $(cat /var/run/nginx.pid))重载配置而无需重启服务,减少业务中断时间。
在实际运维中,需注意区分进程级故障(如内存泄漏导致OOM)与服务级故障(如配置文件语法错误),前者需结合性能监控工具(如top、ps)分析资源占用,后者可通过systemctl status的输出直接定位错误原因。通过本章工具与方法的综合应用,可实现服务全生命周期的可控管理,为系统稳定性提供技术保障。