我想在 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
Run Code Online (Sandbox Code Playgroud)
服务器启动但未发送命令。我究竟做错了什么?
tmux \xe2\x80\x99sattach-session
命令在客户端分离(或其会话消失)之前不会退出;您的脚本实际上已暂停,等待tmux a
命令完成。
您可能希望将附加安排为脚本中的最后一步(除非您想在客户端分离后立即运行某些命令)。
\n\n如果您想在睡眠期间查看窗口(通过附加的客户端)(例如观看 Minecraft 服务器启动),您可以让bash在后台运行sleep
and :tmux send-keys
tmux new-session -d \xe2\x80\xa6\ntmux new-window \xe2\x80\xa6\n{\n sleep 10\n tmux send-keys \xe2\x80\xa6\n} &\ntmux attach-session \xe2\x80\xa6\n
Run Code Online (Sandbox Code Playgroud)\n