Centos Tmux - Bash脚本

d7v8vwbk  于 2023-11-18  发布在  其他
关注(0)|答案(2)|浏览(140)

我有一个Java应用程序(Minecraft服务器),您可以使用以下命令启动。
第一个月
我有8个Minecraft服务器在一个专用服务器上运行,所以我使用tmux。
我有一个名为“servers”的tmux会话,在这个tmux会话中我有8个窗口。每个窗口运行一个minecraft服务器。
当服务器重新启动时,它们将启动名为start.sh的脚本
所以我的问题是:我怎样才能使服务器在与之前相同的会话中启动?
是不是像
#!/bin/bash tmux a -t servers #something java -jar -Xmx4G -Xms4G Spigot.jar

gcuhipw9

gcuhipw91#

这里有一个简单的脚本,可以在不同窗口的tmux会话中启动多个服务器。

#!/bin/bash
SESSION='minecraft_servers'

tmux -2 new-session -d -s $SESSION

# Setup a window for server 1
tmux rename-window 'server1'
tmux send-keys "cd /server1_dir; java -jar -Xmx4G -Xms4G Spigot.jar" C-m

# Setup a window for server 2
tmux new-window -t $SESSION:1 -n 'server2' 
tmux send-keys "cd /server2_dir; java -jar -Xmx4G -Xms4G Spigot.jar" C-m

# Setup a window for server 3
tmux new-window -t $SESSION:2 -n 'server3' 
tmux send-keys "cd /server3_dir; java -jar -Xmx4G -Xms4G Spigot.jar" C-m

...(start more servers here the same as the two above)

# Set default window to first window
tmux select-window -t $SESSION:0

字符串
在这个脚本运行之后,你只需使用tmux attach命令像正常一样打开会话。

quhf5bfb

quhf5bfb2#

尝试使用以下脚本:

sleep 1
tmux send-keys -t servers:0.0 "java -jar -Xmx4G -Xms4G Spigot.jar" C-m

字符串
send-keys命令将密钥发送到现有窗格。
-t选项以<session>:<window>.<pane>指定目标窗格
在这个选项后面写你的命令。使用引号:空格也必须被发送。在你的命令后面添加C-m键。它意味着Ctrl+m。就像你输入“Enter”一样。
这个脚本将你的命令发送到你的窗格。这个窗格必须存在并且它必须是可以运行你的命令的终端。所以你应该在此之前准备好你的窗格。
如果/restart命令被调用,那么服务器会停止并执行您的脚本在停止结束时。所以我们需要添加sleep命令来等待服务器停止后。否则,您的命令将在服务器控制台(而不是终端)执行。

相关问题