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]