Se você colocar o código que deseja executar, por exemplo, /opt/my_script.sh
, é muito fácil fazer o que você quer:
tmux new-session -d -s "myTempSession" /opt/my_script.sh
Isso inicia uma nova sessão desanexada, chamada "myTempSession", executando seu script. Mais tarde você pode anexar a ele para verificar o que está fazendo, executando tmux attach-session -t myTempSession
.
Essa é, na minha opinião, a solução mais direta e elegante. Eu não estou ciente de qualquer maneira fácil de executar comandos de stdin (leia "de heredocs") com tmux. Ao invadir você pode até ser capaz de fazer isso, mas ainda assim seria (e pareceria) um hack.
Por exemplo, aqui está um hack que usa o comando i sugerido acima para simular o comportamento que você quer (= executar código em uma nova sessão tmux de um heredoc. Nenhuma gravação ocorre no disco rígido do servidor, quando o arquivo temporário é criado /dev/shm
, que é um tmpfs):
(
cat >/dev/shm/my_script.sh &&
chmod +x /dev/shm/my_script.sh &&
tmux new-session -d '/dev/shm/my_script.sh; rm /dev/shm/my_script.sh'
) <<'EOF'
echo "hacky, but works"
EOF