在 tmux 中向窗口发送命令

在 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

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

答案1

多路复用器attach-session命令不会退出,直到客户端分离(或其会话消失);您的脚本实际上已暂停,等待tmux a命令完成。

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

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

tmux new-session -d …
tmux new-window …
{
    sleep 10
    tmux send-keys …
} &
tmux attach-session …

相关内容