Debian 僵尸进程的配置与治理
一 核心原则
二 应用程序侧的正确做法(可被“配置”的代码与脚本)
sigaction(SIGCHLD, …, SA_RESTART);while ((pid = waitpid(-1, &status, WNOHANG)) > 0) { … }waitpid(pid, …) 即可。wait <pid> 等待回收;或用 trap … EXIT 在退出时执行清理逻辑,确保回收已派生的子进程。三 用 systemd 托管服务以减少僵尸
[Unit]
Description=Your App
After=network.target
[Service]
Type=simple
ExecStart=/path/to/your_app
Restart=on-failure
KillSignal=SIGTERM
TimeoutStopSec=30
[Install]
WantedBy=multi-user.target
Restart=on-failure 让异常退出服务可被拉起;TimeoutStopSec 控制优雅停止超时。四 运维处置与监控
ps -eo pid,ppid,state,cmd | awk '$3 ~ /Z/ {print}'ps … | grep Z;使用 top/htop 观察状态列。