fusenapi/run_all_server.sh

58 lines
1.6 KiB
Bash
Raw Normal View History

2023-07-10 05:05:49 +00:00
#!/bin/bash
# 定义一个函数来在每个服务器目录下运行 go run <server_name>.go
run_server() {
server_name=$1
echo "Running $server_name"
# 如果之前存在相同名字的 screen 会话,先将其终止
existing_session=$(screen -ls | grep -w "$server_name")
if [ -n "$existing_session" ]; then
echo "Terminating existing screen session for $server_name"
screen -S "$server_name" -X quit
fi
# 导航到相应的目录
2023-07-10 05:10:43 +00:00
cd server/$server_name
2023-07-10 05:05:49 +00:00
2023-09-20 10:00:46 +00:00
GOOS=linux GOARCH=amd64 go build -ldflags "-w -s" -linkshared
2023-09-19 09:34:10 +00:00
[ -f .gitignore ] || echo $server_name > .gitignore
2023-07-10 05:05:49 +00:00
# 使用 screen 运行 go run <server_name>.go
2023-09-19 04:01:37 +00:00
screen -dmS $server_name -L ./$server_name
2023-07-10 05:05:49 +00:00
# 返回到上一级目录
cd - > /dev/null
}
2023-09-20 09:36:29 +00:00
find /tmp/go-build* -mmin +5 -exec rm -rf {} +
find /tmp/go-link* -mmin +5 -exec rm -rf {} +
2023-08-10 11:18:54 +00:00
2023-07-10 05:05:49 +00:00
# 列出所有服务器目录
2023-07-21 03:14:24 +00:00
server_dirs=() # 初始化一个空数组
for dir in server/*/ ; do # 遍历 "server/" 下的所有子目录
dir=${dir%*/} # 删除末尾的 "/"
dir=${dir##*/} # 删除开头的 "server/"
server_dirs+=("$dir") # 添加到数组
done
2023-07-10 05:05:49 +00:00
# 在每个服务器目录下运行相应的 go 程序
for server_dir in "${server_dirs[@]}"; do
run_server $server_dir
2023-07-19 02:59:13 +00:00
done
# 定义目录和screen名称
dir_path="./proxyserver"
screen_name="proxyserver"
# 进入目录
cd $dir_path
# 检查是否存在screen session
if screen -list | grep -q "$screen_name"; then
# 结束存在的screen session
screen -S $screen_name -X quit
fi
# 启动新的screen session并运行go程序
screen -dmS $screen_name -L go run main.go