🗑️ 完整清理脚本
#!/bin/bash
echo "==================================="
echo "🗑️ 幻兽帕鲁服务器完整清理脚本"
echo "==================================="
echo ""
# 检查是否以root权限运行
if [ "$EUID" -ne 0 ]; then
echo "❌ 请使用 sudo 运行此脚本"
echo "用法: sudo bash cleanup.sh"
exit 1
fi
echo "⚠️ 警告:此操作将删除以下内容:"
echo " - steam用户及其主目录"
echo " - SteamCMD安装文件"
echo " - 幻兽帕鲁服务器文件"
echo " - systemd服务配置"
echo " - 防火墙规则"
echo ""
read -p "确认要继续吗?(输入 YES 继续): " confirm
if [ "$confirm" != "YES" ]; then
echo "❌ 已取消清理操作"
exit 0
fi
echo ""
echo "🔄 开始清理..."
echo ""
# 1. 停止并删除systemd服务
echo "1️⃣ 停止并删除systemd服务..."
systemctl stop palworld 2>/dev/null
systemctl disable palworld 2>/dev/null
rm -f /etc/systemd/system/palworld.service
systemctl daemon-reload
echo "✅ systemd服务已清理"
# 2. 删除防火墙规则
echo ""
echo "2️⃣ 删除防火墙规则..."
ufw delete allow 8211/udp 2>/dev/null
ufw delete allow 25575/tcp 2>/dev/null
echo "✅ 防火墙规则已清理"
# 3. 停止steam用户的所有进程
echo ""
echo "3️⃣ 停止steam用户的所有进程..."
pkill -u steam 2>/dev/null
sleep 2
pkill -9 -u steam 2>/dev/null
echo "✅ steam用户进程已停止"
# 4. 删除steam用户主目录
echo ""
echo "4️⃣ 删除steam用户主目录..."
rm -rf /home/steam
echo "✅ /home/steam 已删除"
# 5. 删除steam用户
echo ""
echo "5️⃣ 删除steam用户..."
userdel -r steam 2>/dev/null
echo "✅ steam用户已删除"
# 6. 清理可能的临时文件
echo ""
echo "6️⃣ 清理临时文件..."
rm -f /tmp/steamcmd* 2>/dev/null
rm -f /tmp/steam* 2>/dev/null
echo "✅ 临时文件已清理"
# 7. 清理日志文件
echo ""
echo "7️⃣ 清理日志文件..."
journalctl --vacuum-time=1s --user-unit=palworld 2>/dev/null
echo "✅ 日志文件已清理"
# 8. 可选:卸载32位库(如果不需要其他32位程序)
echo ""
read -p "是否卸载32位库支持?(如果有其他32位程序请输入 n) [y/N]: " uninstall_32bit
if [[ "$uninstall_32bit" =~ ^[Yy]$ ]]; then
echo "8️⃣ 卸载32位库..."
apt-get remove --purge lib32gcc-s1 lib32stdc++6 -y 2>/dev/null
dpkg --remove-architecture i386 2>/dev/null
apt-get autoremove -y
apt-get autoclean
echo "✅ 32位库已卸载"
else
echo "⏭️ 跳过卸载32位库"
fi
echo ""
echo "==================================="
echo "✅ 清理完成!"
echo "==================================="
echo ""
echo "已删除的内容:"
echo " ✓ steam用户"
echo " ✓ /home/steam 目录"
echo " ✓ SteamCMD文件"
echo " ✓ 幻兽帕鲁服务器文件"
echo " ✓ systemd服务配置"
echo " ✓ 防火墙规则"
echo ""
1️⃣ if [ "$EUID" -ne 0 ]; then
这是一个条件判断语句,拆解如下:
🔹 $EUID
环境变量,表示 Effective User ID(有效用户 ID)
在 Linux 系统中,每个用户都有一个数字 ID
root 用户的 EUID 永远是 0
普通用户的 EUID 是其他数字(如 1000, 1001 等)
# 查看当前用户的EUID
echo $EUID
# root用户显示:0
# 普通用户显示:1000(或其他数字)
🔹 [ ]
这是测试命令的语法(等同于
test命令)用于条件判断
🔹 -ne
not equal 的缩写
表示 不等于(数值比较)
其他常用比较符:
-eq:等于-gt:大于-lt:小于-ge:大于等于-le:小于等于
🔹 0
root 用户的 ID 值
🔹 ;
命令分隔符,表示一行结束
🔹 then
如果条件为真,则执行后面的代码
📝 使用方法
方法1:创建并运行脚本
# 1. 创建清理脚本
nano cleanup_palworld.sh
# 2. 复制上面的脚本内容粘贴进去
# 3. 保存并退出 (Ctrl+X, 然后 Y, 然后 Enter)
# 4. 添加执行权限
chmod +x cleanup_palworld.sh
# 5. 运行脚本
sudo ./cleanup_palworld.sh
方法2:一键执行(推荐)⚡
sudo bash -c 'cat > /tmp/cleanup.sh << "EOF"
#!/bin/bash
echo "🗑️ 开始清理幻兽帕鲁服务器..."
systemctl stop palworld 2>/dev/null
systemctl disable palworld 2>/dev/null
rm -f /etc/systemd/system/palworld.service
systemctl daemon-reload
ufw delete allow 8211/udp 2>/dev/null
ufw delete allow 25575/tcp 2>/dev/null
pkill -u steam 2>/dev/null
sleep 2
pkill -9 -u steam 2>/dev/null
rm -rf /home/steam
userdel -r steam 2>/dev/null
rm -f /tmp/steamcmd* /tmp/steam* 2>/dev/null
echo "✅ 清理完成!"
echo "已删除:"
echo " - steam用户及主目录"
echo " - SteamCMD和服务器文件"
echo " - systemd服务"
echo " - 防火墙规则"
EOF
chmod +x /tmp/cleanup.sh
/tmp/cleanup.sh
rm /tmp/cleanup.sh'
🔍 验证清理结果
# 检查steam用户是否已删除
id steam
# 应该显示:id: 'steam': no such user
# 检查目录是否已删除
ls -la /home/steam
# 应该显示:cannot access '/home/steam': No such file or directory
# 检查服务是否已删除
systemctl status palworld
# 应该显示:Unit palworld.service could not be found
# 检查防火墙规则
sudo ufw status | grep 8211
# 应该没有输出