Palworld幻兽帕鲁-服务器搭建

Palworld幻兽帕鲁-服务器搭建

Fate
2024-01-24 / 0 评论 / 136 阅读 / 正在检测是否收录...

教程基于CentOS7系统操作

https://tech.palworldgame.com/dedicated-server-guide#linux

https://developer.valvesoftware.com/wiki/SteamCMD#Linux


1.以root用户创建steam用户

sudo useradd -m steam 
sudo passwd steam

2.进文件夹

sudo -u steam -s 
cd /home/steam

3.安装运行SteamCMD所需的依赖项

yum install glibc.i686 libstdc++.i686

4.切换steam用户

su - steam

5.为SteamCMD创建一个目录并切换到该目录

mkdir ~/Steam && cd ~/Steam

6.下载并解压 Linux 版 SteamCMD

curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -

7.启动SteamCMD并且安装Palworld服务

cd ~/Steam
./steamcmd.sh +login anonymous +app_update 2394010 validate +quit

8.进入Palworld目录

cd ~/Steam/steamapps/common/PalServer

9.启动

./PalServer.sh

服务器管理员相关命令

/AdminPassword {AdminPassword}
登录获取管理权限。

/Shutdown {Seconds} {MessageText}
服务器关闭后的秒数将通知您的 MessageText。

/DoExit
强制停止服务器。

/Broadcast {MessageText}
向服务器中的所有玩家发送消息。

/KickPlayer {SteamID}
将玩家从服务器中踢出。

/BanPlayer {SteamID}
从服务器禁止玩家。

/TeleportToPlayer {SteamID}
传送到目标玩家的当前位置。

/TeleportToMe {SteamID}
目标玩家传送到您当前的位置。

/ShowPlayers
显示所有已连接玩家的信息。

/Info
显示服务器信息。

/Save
保存世界数据。

【推荐】服务器内存监控达到指定阈值重启并删除残留文件

#!/bin/bash

# 设置内存占用阈值
MEMORY_THRESHOLD=90

# 获取当前内存占用
MEMORY_USAGE=$(free | awk '/Mem/{printf("%.2f"), $3/$2*100}')

# 进程名称
PROCESS_NAME="PalServer.sh"

# RCON相关信息
RCON_HOST="127.0.0.1"
RCON_PORT="25575"
RCON_PASSWORD="密码"

rm -rf /home/steam/Steam/steamapps/common/PalServer/Pal/Binaries/Linux/PalServer-Linux-Test.debug
rm -rf /home/steam/Steam/steamapps/common/PalServer/Pal/Binaries/Linux/core.*

# 检测端口是否正常
if ! nc -z -w1 $RCON_HOST $RCON_PORT; then
    echo "端口 $RCON_HOST:$RCON_PORT 异常,执行杀死进程操作"
    # 获取目标进程及其所有子进程的PID
    PROCESS_IDS=$(pgrep -o $PROCESS_NAME)
    # 杀死进程及其所有子进程
    if [ -n "$PROCESS_IDS" ]; then
        echo "杀死进程 $PROCESS_NAME 及子进程 (PIDs: $PROCESS_IDS)"
        pkill -P $PROCESS_IDS
    else
        echo "没有发现 $PROCESS_NAME 进程"
    fi
else
    echo "端口 $RCON_HOST:$RCON_PORT 正常"
fi

# 检查内存占用是否超过阈值
if (( $(echo "$MEMORY_USAGE > $MEMORY_THRESHOLD" | bc -l) )); then
    # 在结束进程之前通过RCON执行指定命令
    echo "占用达到 $MEMORY_THRESHOLD% 执行RCON命令"
    mcrcon -H $RCON_HOST -P $RCON_PORT -p $RCON_PASSWORD "Shutdown 120 [-Warning-]-[RAM_$MEMORY_USAGE%]-[Restart_after_120_seconds]"
    sleep 125
    MEMORY_USAGE=$(free | awk '/Mem/{printf("%.2f"), $3/$2*100}')
    # 检查是否完全卡死
    if (( $(echo "$MEMORY_USAGE > $MEMORY_THRESHOLD" | bc -l) )); then
        # 强制重启
        echo "强制重启"
        # 获取目标进程及其所有子进程的PID
        PROCESS_IDS=$(pgrep -o $PROCESS_NAME)
        # 杀死进程及所有子进程
        if [ -n "$PROCESS_IDS" ]; then
            echo "杀死进程 $PROCESS_NAME 及子进程 (PIDs: $PROCESS_IDS)"
            pkill -P $PROCESS_IDS
        else
            echo "没有发现 $PROCESS_NAME 进程"
        fi
    else
        # 正常重启
        echo "正常重启"
    fi
else
    # 低于阈值
    echo "状态正常"
    mcrcon -H $RCON_HOST -P $RCON_PORT -p $RCON_PASSWORD "Broadcast [-State-]-[RAM_$MEMORY_USAGE%]"
fi

【可选】压缩内存

大小建议用内存一半就够了

如果物理内存超过32G弄个8G或不弄都可以

新建一个名为【zram.sh】脚本

#!/bin/bash

function configure_zram() {
    # 提示用户输入希望设置的 zram 大小(以 GB 为单位)
    read -p "请输入希望设置的 zram 大小(以 GB 为单位): " SIZE_IN_GB

    # 将 GB 转换为字节
    SIZE_IN_BYTES=$((SIZE_IN_GB * 1024 * 1024 * 1024))

    # 加载 zram 模块
    sudo modprobe zram

    # 配置 zram 设备
    echo $SIZE_IN_BYTES > /sys/block/zram0/disksize

    # 启用 zram 设备
    sudo mkswap /dev/zram0
    sudo swapon /dev/zram0

    # 显示信息
    echo "已配置 zram 大小为 ${SIZE_IN_GB}GB。"

    # 显示在重启时保持配置的提示
    echo "要使 zram 在系统重启时保持配置,请将以下行添加到启动脚本中(例如 /etc/rc.local):"
    echo "modprobe zram"
    echo "echo $SIZE_IN_BYTES > /sys/block/zram0/disksize"
    echo "mkswap /dev/zram0"
    echo "swapon /dev/zram0"
}

function uninstall_zram() {
    # 卸载 zram 设备
    sudo swapoff /dev/zram0
    sudo rmmod zram

    # 显示信息
    echo "已卸载 zram 设备。"
}

# 提示用户选择操作
echo "请选择操作:"
echo "0. 卸载 zram"
echo "1. 配置 zram"
read -p "请输入选项 (0 或 1): " OPTION

case $OPTION in
    0)
        uninstall_zram
        ;;
    1)
        configure_zram
        ;;
    *)
        echo "无效的选项。请输入 0 或 1。"
        ;;
esac

文件权限

sudo chmod +x zram.sh

执行

sudo ./zram.sh

压缩权重

cat > '/etc/sysctl.conf' << EOF
vm.swappiness=100
EOF
sysctl -p
0

评论

博主关闭了所有页面的评论