wait() 或 waitpid() 回收子进程资源。signal(SIGCHLD, SIG_IGN) 忽略子进程结束信号,由内核自动回收。fork()/exec() 组合,改用更轻量的进程管理方式。systemd 管理服务,配置 KillMode=process 确保子进程正确回收。ps -A -o stat,ppid,pid,cmd | grep -e '[Zz]'。kill -9 <父进程PID>,僵尸进程会被 init 进程回收。kill -9 <僵尸进程PID>,仅适用于无法通过父进程回收的情况。cron 定时执行:#!/bin/bash
ps -A -o stat,ppid,pid,cmd | grep -e '[Zz]' | awk '{print $2}' | xargs kill -9
/etc/sysctl.conf,设置 kernel.pid_max 和 fs.file-max。kernel.core_pattern=/var/crash/core.%e.%p。supervisord 监控子进程,自动回收异常进程。参考来源:[1,2,3,5,6,7,8,9,10,11]