banner
NEWS LETTER

懒得:手动更新《饥荒》服务器上的插件

Scroll down

文件树结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 注意以下就是绝对路径/steam
└── steam #(用户)根目录
├── common #饥荒游戏存档服务器相关目录
│ ├── backup #备份文件夹
│ ├── dstsave #存档目录
│ └── dstserver #服务器目录
├── cron_update_starve.sh #定时更新程序
├── steamcmd #steamcmd服务目录
│ ├── linux32
│ ├── linux64
│ ├── package
│ ├── public
│ ├── siteserverui
│ ├── steam
│ ├── steamcmd_linux.tar.gz
│ └── steamcmd.sh #steamcmd启动脚本
├── update_starve.cmd #更新饥荒服务端命令库
└── update_starve.sh #更新饥荒服务端脚本

定时调度

📌如果想要服务器定期执行一些列动作,就需要一个定时器来指定需要执行的程序脚本

  • crontab:可以制定一个进程表
1
2
3
[root@VM-8-6-centos]$ crontab -e #编辑当前用户的时程表
# VI中编辑
0 2 * * * /steam/cron_update_starve.sh #每天的凌晨2:00执行一次.sh
  • 定时调度脚本:cron_update_starve.sh中需要装载执行一次饥荒服务器更新时需要的所有动作(指令集)
1
2
3
4
5
6
7
#!/bin/bash
#第一行的#!符号表示用于指定shell脚本的解释器是用/bin/bash
set -e #指定shell脚本的工作模式
/steam/common/dstserver/bin/stop.sh #第一步:执行停机脚本,关闭正在运行的饥荒服务端,避免数据丢失
sleep 5 #休眠5分钟
/steam/update_starve.sh #第二步:执行饥荒服务端的更新脚本
/steam/common/dstserver/bin/start.sh #第三步:执行饥荒服务端的启动脚本

饥荒服务端更新

  • 停机脚本:stop.sh 关闭正在运行的饥荒服务端,避免数据丢失;
1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
pids=$(ps aux | grep dontstarve | awk -v OFS=',' '{print $2,$11}') #获取进程的PID
array=(${pids// / })
for var in ${array[@]}
do
    item=(${var//,/ })
    result=`echo ${item[1]} | grep dontstarve`
    if [[ "$result" != "" ]]
    then
          rs=$(kill -9 ${item[0]})
    fi
done
  • 更新脚本:update_starve.sh 更新饥荒服务端;
1
2
#!/bin/bash
/steam/steamcmd/steamcmd.sh < /steam/update_starve.cmd #将.cmd指令集中的指令重定向到使用SteamCMD命令行打开后执行
1
2
3
4
force_install_dir /steam/common/dstserver #SteamCMD命令行中强制安装在指定目录指令
login anonymous #匿名登录
app_update 343050 validate #更新饥荒(在steam中代码为343050)
quit #退出SteamCMD
  • 启动脚本:start.sh 重新启动饥荒服务端;
1
2
3
4
5
6
#!/bin/bash
set -e
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd $SCRIPT_DIR
nohup ./start_master.sh  >/dev/null 2>&1 &
nohup ./start_cave.sh    >/dev/null 2>&1 &
其他文章