perl
pode não ser o mais adequado, a menos que o módulo IO::Pty
esteja instalado.
Primeiro, talvez você não precise de nada complicado se o dado-que-leva-longo-tempo (gtttlt) pode funcionar bem com canos.
mkfifo input
nohup gtttlt <> input > output 2>&1 &
para iniciar o gtttlt
(entrada de um pipe nomeado, saída para um arquivo regular). Então você anexa a ele com:
tail -f output & cat > input
Se os canais não funcionarem e você precisar de um terminal, convém usar algo que possa iniciar um pseudo-terminal como expect
, zsh
zpty
, perl
' IO::Pty
ou sshd
:
mkfifo input
nohup ssh -tt localhost gtttlt <> input > output 2>&1
E para anexar :
stty raw -echo; tail -f output & cat > input
Observe que não é como implementar screen
ou tmux
. screen
e tmux
implementam um emulador de terminal. Quando você reconecta, você vê o conteúdo da tela desse emulador de terminal. Aqui, quando você reconecta, você vê apenas as últimas 10 linhas de saída (embora seja possível ajustar passando uma opção -n 123
para tail
). E estamos apenas passando todos os dados para / do terminal host.