debian

Debian僵尸进程怎么备份

小樊
41
2025-11-15 06:28:28
栏目: 智能运维

Debian系统中僵尸进程的备份与取证

概念澄清与基本原则

取证与备份步骤

清理与恢复建议

一键取证脚本示例

#!/usr/bin/env bash
set -Eeuo pipefail
ZPID=${1:-}
[[ -z "$ZPID" ]] && { echo "Usage: $0 <zombie_pid>"; exit 1; }

OUT="zombie-${ZPID}-$(date +%F_%H%M%S)"
mkdir -p "$OUT"

{
  echo "=== ps -eo pid,ppid,state,ppid,cmd,etime,pcpu,pmem | awk '\$3 ~ /Z/' ==="
  ps -eo pid,ppid,state,ppid,cmd,etime,pcpu,pmem | awk -v z="$ZPID" '$1==z || $3 ~ /Z/ {print}'

  echo -e "\n=== pstree -aps $ZPID ==="
  pstree -aps "$ZPID"

  echo -e "\n=== /proc/$ZPID/cmdline ==="
  tr '\0' ' ' < "/proc/$ZPID/cmdline" || echo "N/A"

  echo -e "\n=== /proc/$ZPID/status ==="
  cat "/proc/$ZPID/status" 2>/dev/null || echo "N/A"

  echo -e "\n=== /proc/$ZPID/stat ==="
  cat "/proc/$ZPID/stat" 2>/dev/null || echo "N/A"

  echo -e "\n=== lsof -p $ZPID ==="
  lsof -p "$ZPID" 2>/dev/null || echo "N/A"

  echo -e "\n=== journalctl recent (system-wide) ==="
  journalctl --since "1 hour ago" -e 2>/dev/null || echo "N/A"
} > "$OUT/info.txt"

# 可选:gdb 调用栈
if command -v gdb >/dev/null 2>&1; then
  gdb -p "$ZPID" -batch -ex "thread apply all bt" -ex "quit" > "$OUT/gdb-bt.txt" 2>&1 || true
fi

tar czf "${OUT}.tar.gz" -C "$OUT" . && rm -rf "$OUT"
echo "Saved to ${OUT}.tar.gz"

0
看了该问题的人还看了