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.