Como evito o erro Broken Pipe do lado do cliente da ssh
conexão no Ubuntu?
Digamos que slurm
esteja rodando no servidor e acabei de fazer uma salloc
requisição. Se a conexão for interrompida, a recuperação da sessão (com, digamos screen
) não afetará em nada o fato de meu salloc
comando ter sido cancelado por slurm
. Agora eu teria que iniciar outra fila. Existe uma maneira de evitar um cano quebrado no lado do cliente, visto que a edição do .ssh/config
arquivo, embora mitigue o risco, não oferece garantias?
Além da conhecida solução do lado do Cliente, que infelizmente não impede que o Servidor feche a conexão após um certo período de inatividade, ou seja, incluindo algo como
no
arquivo e reiniciando
sudo systemctl restart ssh
, descobri que o seguinte funciona maravilhosamente bem. Usandoxdotool
pode-se escrever um
no_more_broken_pipes.sh
arquivo que contenha algo nas linhas deQuando executado, isso é
ele pressionará Return a cada dez segundos, independentemente do que você estiver fazendo , até que você aborte com
ctrl+c
.Contanto que você esteja focado no terminal correto, o servidor receberá entradas a cada dez segundos (
sleep 10
), portanto a conexão não será encerrada, mesmo se você sair de férias. Se usar a tecla Enter não for uma boa ideia, axev
ferramenta ajudará a determinar o que escrever no comando para que uma tecla mais segura seja pressionada.Conto de advertência
Ao fazer isso, você também deve evitar que qualquer janela pop-up (de qualquer tipo) apareça . Estou incluindo telas de login (como
i3lock
), mensagens de atualização disponíveis, outros enfeites. O que funciona incrivelmente bem para mim, desde que apenas um terminal esteja envolvido , é a tela cheia dei3
(geralmenteSuper_L+f
): evita automaticamente (até agora tem sido assim para mim) o foco em novas janelas.