the echo will appear after 24 hours in the
tmux
session's stdout
Se você se referir à sessão tmux
que inicia no script, isso não é verdade. bash
process executando o script esperará que tmux new-session -d bash
seja encerrado, então ele executará sleep 1d
e assim por diante. Observe que tmux new-session -d bash
sai quase imediatamente devido a -d
(o outro bash
dentro da recém criada tmux
sessão não sai, mas é irrelevante agora).
Altere o atraso para sleep 10
e execute o script. Espere um pouco e você verá echo
-es no seu terminal atual . Em seguida, invoque tmux ls
para ver que há uma nova sessão inútil deixada para trás. Você pode anexar a ele e verificar se nada foi echo
-ed lá.
I can't use
sleep
in my base session because it would make the session unusable
O seu script também funciona em primeiro plano. Como sobre um trabalho de fundo? Você não precisa de tmux
:
(sleep 20s; echo surprise) &
Em geral, você pode escrever em outro terminal, se você tiver permissões apropriadas. O que segue é o que eu posso fazer no meu Debian. Digamos que eu queira escrever a partir da sessão B, então o texto é visível em bash
session A. Primeiro eu preciso saber qual dispositivo o stdout
de A realmente é:
readlink /proc/$pid_of_bash_A/fd/1
De dentro do bash
A, isso é mais simples graças ao parâmetro $$
special:
readlink /proc/$$/fd/1
A saída é /dev/pts/3
no meu caso. Então na sessão B:
echo Hello World! > /dev/pts/3