在运行PalWorld《幻兽帕鲁》服务器时,由于官方服务器内存泄漏,经常会导致服务器崩溃,所以需要建立一个服务来进行自动管理,每当内存溢出时就重启服务器。


第 1 步:创建服务文件

  1. 打开终端。
  2. 使用 nano 或您喜欢的任何文本编辑器来创建服务文件。您可以使用以下命令:
sudo nano /etc/systemd/system/palworld.service

这将会以管理员权限打开一个新的或现有的文件,名为 palworld.service

第 2 步:编辑服务文件

  1. 在打开的文本编辑器中,粘贴以下内容:

    [Unit]
    Description=Palworld Game Server
    After=network.target
    
    [Service]
    Type=simple
    User=palworld
    Restart=on-failure
    RestartSec=60s
    MemoryMax=9.5G
    ExecStart=/home/palworld/Steam/palworld/PalServer.sh -port=19132 -players=50 -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS
    
    [Install]
    WantedBy=multi-user.target
  2. 然后保存并关闭文件。在 nano中,您可以通过按下 Ctrl + O 来保存更改,然后按Ctrl + X 退出。

第 3 步:启动和启用服务

  1. 重新加载 systemd 配置

    sudo systemctl daemon-reload

    更新systemctl的配置文件。

  2. 启动服务

    sudo systemctl start palworld

    启动服务器。

  3. 设置服务在启动时自动运行

    sudo systemctl enable palworld

    使服务器在系统启动时自启动。

  4. 检查服务状态

    sudo systemctl status palworld

    这个命令会显示服务的当前状态,包括是否正在运行,以及最近的日志条目。

  5. 关闭服务

    sudo systemctl stop palworld

服务文件解释

  1. [Unit] 部分

    • Description: 服务的描述。
    • After: 指定服务启动的顺序。在这里,它是在网络服务 (network.target) 启动之后。
  2. [Service] 部分

    • Type=simple: 指定服务的类型。simple 是最常见的选择,意味着一旦 ExecStart 命令启动,服务就被认为是活跃的。
    • User=palworld: 指定服务应以哪个用户身份运行。在这里是 palworld 用户。
    • Restart=on-failure: 当服务异常退出时,systemd 将尝试重启它。
    • RestartSec=60s: 在尝试重启服务之前等待的秒数,这里是60秒。
    • MemoryMax=9.5G: 服务使用的最大内存限制。当服务使用的内存超过这个值9.5GB时,将会被重启。
    • ExecStart: 指定启动服务时执行的命令。这里是你的游戏服务器启动脚本。
  3. [Install] 部分

    • WantedBy=multi-user.target: 指定当系统启动为多用户模式时,这个服务应该被启动。

其他注意事项

  1. 确保 ExecStart 这个项目的脚本具有执行权限。您可以通过运行 chmod +x 来设置执行权限。
  2. 如果不需要该服务了,可以使用sudo systemctl disable palworld 来禁用服务,尤其是你可能在需要删除用户因一直创建线程遇到无法删除的问题时。
最后修改:2024 年 01 月 27 日
喜欢就请我喝一杯奶茶吧~