|
Muitos usuários do SSH reclamam que quando estão numa sessão SSH rodando um processo e esta sessão cai por algum motivo (geralmente falha na conexão com a internet), ao reconectar-se posteriormente, o processo que era executado ou foi morto pelo sistema, ou então continua em execução, mas não podemos mais colocá-lo em foreground (vê-lo, como se estivéssemos executando no terminal atual). Isto acontece porque o sistema mata processos que estão inativos e não estão conectados a nenhum terminal. No caso de processos em atividade plena, o sistema não mata, mas como o processo não está conectado a nenhum terminal, não conseguimos reutilizá-lo por vias normais. Este artigo mostrará como podemos previnir este problema utilizando de técnicas simples. Boa leitura!
O SSH (Secure SHell) é uma ferramenta extremamente útil e presente no dia-a-dia de administradores de sistemas baseados em Linux. Sua segurança e versatilidade conquistaram os usuários rapidamente. Existem clientes SSH para praticamente todos os sistemas operacionais existentes, incluindo o Windows. Além disso, ele oferece o serviço de transferência de arquivos entre o servidor e o cliente, utilizando o SFTP (Secure File Transfer Protocol), na mesma porta e com suporte a conexões concorrentes. É realmente incrível.
No entanto, algumas operações podem gerar pequenos problemas. Uma delas é quando conectamos um servidor SSH e iniciamos um download com o wget. Particularmente, uso isso diariamente. O problema está em quando a nossa conexão com o servidor SSH falha. Ao reconectar, o processo do wget continua ativo (o sistema não o mata porque ele está consumindo CPU) mas não podemos mais nos conectarmos a ele e, como conseqüência, não dá pra saber quanto tempo falta para terminar o download, nem verificar seu andamento. Este é apenas um exemplo, que nos deixa duas escolhas: deixar o wget executando até o término do download ou matar o processo e reiniciar. No caso do wget, se usarmos a opção -c, continuaremos de onde ele parou, mas nem todos os servidores suportam o resume e além disso, não é uma solução muito elegante, uma vez que o processo já está lá. Será que não há nenhuma maneira de trazê-lo para o foreground? O problema é que o processo não foi posto em background, logo não há como conectá-lo em foreground por vias normais.
Vamos passo-a-passo demonstrar o problema. Primeiro, você se conecta num servidor SSH:
Agora é hora de iniciar um download com o wget:
Neste ponto, se a conexão cair e voltarmos a nos reconectar, estamos num terminal livre, mas o processo do wget continuará em execução. Vamos ver:
Vemos que o processo está rodando, mas não está conectado a nenhum terminal (perceba a o ponto de interrogação destacado). O download continua, mas não vemos mais informações sobre ele.
Conecte no servidor SSH e instale o screen (ele está presente na maioria dos repositórios de distribuições, logo, você pode usar o apt-get, urpmi, zypper, etc, dependendo da sua distro), basta chamá-lo pelo nome:
Ele exibirá esta tela:
Pressionando a tecla [ENTER] ou a barra de espaços, um shell comum será aberto. É nele que devemos iniciar as tarefas, por exemplo, um download com o wget:
Se a conexão do cliente com o servidor SSH cair, você pode reconectar ao servidor. Nele, estará rodando uma sessão do screen e para voltar a ela, basta reconectar-se, assim:
Pronto! Você estará conectado à um terminal onde o wget está rodando e ativo e saberá todas as informações do seu download em tempo real, como se a conexão não tivesse sido perdida.
Se houver mais de uma sessão do screen aberta, ele perguntará em qual você deseja se conectar e bastará adicionar o PID da sessão ao final do comando acima para conectar-se à ela.
O screen virtualiza um terminal, logo, qualquer aplicativo pode ser executado nele. Aliás, há maneiras de colocá-lo como daemon para iniciar junto com o sistema, mas para o caso do SSH, basta que seja iniciado quando uma sessão SSH for aberta.
|
Últimos artigos
- Serviços Google via linha de comando (267 hits)
- Monitoração de serviços com o Zabbix (1085 hits)
- Recuperando mensagens do Outlook Express com Linux (245 hits)
- Flash Player 10 nativo para Linux 64-bits (346 hits)
- D-Link DWA-125 no Ubuntu 10.04 (Lucid Lynx) (1112 hits)
- Opera Web Browser - o seu próximo navegador (874 hits)
- Como remover vírus de pen drive (2913 hits)
- Go - A linguagem de programação do Google (922 hits)
- Como usar cartuchos recarregados na HP C5180 (1120 hits)
- Expressões regulares no Mediation (776 hits)
Artigos mais lidos
- Sniffing com o Wireshark (14726 hits)
- Controle de dispositivos com a porta paralela (9493 hits)
- Mascarando o endereço MAC da placa de rede (8141 hits)
- Remoção manual de vírus (6307 hits)
- Ghost pela rede (5981 hits)
- Tudo sobre o GRUB (5433 hits)
- Criando um layout para seu website (4079 hits)
- Extensões perigosas no Windows (3654 hits)
- Entendendo um ataque man-in-the-middle (3358 hits)
- BackTrack - uma distribuição hacker (3276 hits)





