← Back
Uninstall Nezha Agent
Stops services, removes systemd units, cleans directories and leftover processes, then verifies itself. Handles random-suffixed names.
Root required
One-line run
curl -fsSL https://www.moiu.cn/scripts/nezha-uninstall.sh | bashSource
#!/usr/bin/env bash
# 卸载哪吒探针 Agent
#
# 需要 root。停服务、删 systemd 单元、删安装目录与日志、清残留进程。
# 支持 nezha-agent 以及带随机后缀的命名(nezha-agent-xxxxxxxx)。
set -e
# 需要 root:下面的系统级改动都直接执行,不再逐条 sudo
if [ "$(id -u)" -ne 0 ]; then
echo '[!] 这个脚本需要 root 权限,请用 sudo 重新运行:'
echo ' curl -fsSL 脚本地址 | sudo bash'
echo ' 或已经下载到本地:sudo bash 本文件'
exit 1
fi
echo '====== 卸载哪吒 Agent ======'
UNITS=$(systemctl list-unit-files --type=service 2>/dev/null | awk '/^nezha-agent/ {print $1}')
if [ -z "$UNITS" ]; then
echo '[*] 未发现 nezha-agent 相关服务'
else
echo '[*] 发现服务:'
printf ' - %s\n' $UNITS
fi
echo '[1/4] 停止并禁用服务...'
for unit in $UNITS; do
systemctl stop "$unit" 2>/dev/null || true
systemctl disable "$unit" 2>/dev/null || true
echo " -> 已处理 $unit"
done
echo '[2/4] 删除 systemd 单元文件...'
find /etc/systemd /lib/systemd /usr/lib/systemd -name 'nezha-agent*.service' -delete 2>/dev/null || true
rm -f /etc/systemd/system/multi-user.target.wants/nezha-agent*.service 2>/dev/null || true
echo '[3/4] 删除安装目录与日志...'
rm -rf /opt/nezha/agent /var/log/nezha /etc/nezha
echo '[4/4] 重载 systemd 并清理残留进程...'
systemctl daemon-reload
systemctl reset-failed 2>/dev/null || true
pkill -9 -f '[n]ezha-agent' 2>/dev/null || true
echo ''
echo '====== 验证 ======'
if pgrep -f '[n]ezha-agent' >/dev/null 2>&1; then
echo ' [!] 仍有 nezha-agent 进程,请手动检查'
else
echo ' [√] 无残留进程'
fi
if systemctl list-unit-files 2>/dev/null | grep -q '^nezha-agent'; then
echo ' [!] 仍有服务文件残留'
else
echo ' [√] 无残留服务'
fi
echo ''
echo '如果当初装在 /opt/nezha 以外的位置,请手动确认。'
