将命令发送到 tmux 中的窗口

tub*_*bos 6 tmux

我想在 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)

服务器启动但未发送命令。我究竟做错了什么?

Chr*_*sen 3

tmux \xe2\x80\x99sattach-session命令在客户端分离(或其会话消失)之前不会退出;您的脚本实际上已暂停,等待tmux a命令完成。

\n\n

您可能希望将附加安排为脚本中的最后一步(除非您想在客户端分离后立即运行某些命令)。

\n\n

如果您想在睡眠期间查看窗口(通过附加的客户端)(例如观看 Minecraft 服务器启动),您可以让bash在后台运行sleepand :tmux send-keys

\n\n
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