用途:在 Linux 服务器上管理 systemd 服务,排查服务为何失败、反复重启或无法正确启用,并在配置变更后执行受控的重启或 reload。任务仅为日志分析时应改用日志管理技能;跨子系统综合排障应改用故障排查技能。
主要能力:提供 systemctl、journalctl 的核心命令,如 systemctl status/start/stop/restart/reload/enable/disable/is-active/is-enabled,以及 journalctl -u、-f、--since、-p err 等日志查看方式。给出崩溃服务诊断步骤:先看状态与退出码,再取完整错误上下文,然后用 nginx -t、apache2ctl configtest、php-fpm8.3 -t 等原生校验器验证配置,并检查磁盘与端口冲突。附服务快速参考(nginx、apache2、mysql、postgresql、php8.3-fpm、redis、fail2ban、certbot.timer、cron、msmtp 是否支持安全 reload)。还涵盖进程优先级与 cgroup v2 资源控制:nice、renice、ionice,以及 unit 中的 Nice、CPUWeight、CPUQuota、IOSchedulingClass、IOWeight、MemoryMax、TasksMax,和 systemctl set-property、systemd-cgtop。另含 systemd target(multi-user、graphical、rescue)与依赖顺序 Wants/Requires/After/Before/WantedBy 说明。
使用方式:先读取状态与日志再动手,只做最小必要的重启、reload 或启用变更,变更后同时验证单元状态与真实服务行为。可选安装 fast path 脚本:sudo install-skills-bin linux-service-management,使用 sudo sk-service-priority <service> [--cpu-quota 50% --memory-max 512M] 查看或设置服务 cgroup 限制。RHEL 与 Debian 家族的 systemctl、journalctl、unit 文件位置、target、cgroup 控制相同,仅少数单元名(apache2/httpd、cron/crond、ssh/sshd、mysql 或 mariadb、ufw/firewalld)与包管理器(apt/dnf)不同;脚本中应通过 common.sh 的 svc_name 解析单元名,不要硬编码。
适用场景与限制:适合服务失败的受控排查、配置变更后的安全重启或 reload、资源限制与启动目标的调整。诊断默认只读,需要 systemd 与 journal 的读取执行权限;编辑单元或 drop-in、修改启用状态或资源限制、reload 或重启生产服务都需明确的变更权限,mask、停止关键单元或切换 target 需另行确认。不要在未读状态与日志时反复重启,不要把 active (running) 当成应用健康,需探测真实端口、协议或任务结果;不要编辑 /usr/lib 或 /lib 下的厂商单元文件,应使用经审查的 drop-in 并 daemon-reload。快速重启循环时应先停止重试,检查首次失败与限制。若无法访问主机,只能审查提供的 unit、配置与日志,并注明运行时稳定性和应用健康未评估。具体每个服务的完整操作、定时器与 cron、资源控制与 target 细节见对应参考文档;官方文档未提供进一步在线信息。