我想在 tmux 中运行 Minecraft 服务器并从 bash 脚本向服务器窗口发送命令。
下面是我的脚本:
#!/bin/bash
echo "Starting vanilla server..."
sleep 2
# Start a new session with name MC
tmux new-session -d -s MC
# Start minecraft in a new window named UHC
tmux new-window -t MC:1 -n 'UHC' 'java -Xms512M -Xmx1G -jar Minecraft.jar nogui'
# And attach to it
tmux a
# Wait 10 seconds
sleep 10
# Run a command
tmux send-keys -t MC:1 'worldborder get' Enter
服务器启动但未发送命令。我究竟做错了什么?
答案1
多路复用器的attach-session
命令不会退出,直到客户端分离(或其会话消失);您的脚本实际上已暂停,等待tmux a
命令完成。
您可能希望将附加安排为脚本中的最后一步(除非您想在客户端分离后立即运行某些命令)。
如果您想在睡眠期间查看窗口(通过附加的客户端)(例如观看 Minecraft 服务器启动),您可以巴什在后台运行sleep
and :tmux send-keys
tmux new-session -d …
tmux new-window …
{
sleep 10
tmux send-keys …
} &
tmux attach-session …