Enviando comandos para uma janela no tmux

7

Eu quero executar um servidor de minecraft no tmux e enviar comandos para o servidor janela de um script bash.

Abaixo está meu script:

#!/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

O servidor é iniciado, mas o comando não é enviado. O que estou fazendo errado?

    
por tubos 12.07.2015 / 12:03

1 resposta

3

O comando attach-session do

tmux não sai até que o cliente se desconecte (ou sua sessão desapareça); seu script está efetivamente pausado, aguardando a conclusão do comando tmux a .

Você provavelmente deseja organizar a anexação como a última etapa do seu script (a menos que tenha algum comando que deseje executar logo após o cliente ser desconectado).

Se você quiser ver a janela (através do cliente em anexo) durante a suspensão (por exemplo, para assistir ao início do servidor Minecraft), você pode fazer com que bash execute sleep e tmux send-keys em segundo plano:

tmux new-session -d …
tmux new-window …
{
    sleep 10
    tmux send-keys …
} &
tmux attach-session …
    
por 13.07.2015 / 09:29

Tags