5 maneiras de manter as sessões e processos SSH remotos em execução após a desconexão

5 maneiras de manter as sessões e processos SSH remotos em execução após a desconexão

Ssh ou Capsula segura Em termos simples, é uma maneira pela qual uma pessoa pode acessar remotamente outro usuário em outro sistema, mas apenas na linha de comando I.e. modo não-gui. Em termos mais técnicos, quando se manifestamos a outro usuário em outro sistema e executam comandos nessa máquina, ele realmente cria um pseudo-terminal e o anexa ao shell de login do usuário logado.

5 maneiras de manter as sessões SSH em execução após a desconexão

Quando saímos da sessão ou do tempo de sessão depois de estar ocioso por algum tempo, o Sighup O sinal é enviado ao pseudo-terminal e a todos os trabalhos que foram executados nesse terminal, mesmo os empregos que têm seus empregos pais sendo iniciados no pseudo-terminal também são enviados o sinal de suspiro e são forçados a terminar.

Não perca: 5 práticas úteis para manter o servidor SSH seguro e protegido

Somente os trabalhos que foram configurados para ignorar esse sinal são os que sobrevivem ao término da sessão. Nos sistemas Linux, podemos ter muitas maneiras de fazer esses trabalhos em execução no servidor remoto ou em qualquer máquina, mesmo após o logout do usuário e o término da sessão.

Entenda processos no Linux

Processo normal

Processos normais são aqueles que têm vida útil de uma sessão. Eles são iniciados durante a sessão como processos de primeiro plano e acabam em determinado período de tempo ou quando a sessão é registrada. Esses processos têm seu proprietário como qualquer usuário válido do sistema, incluindo root.

Processo órfão

Os processos órfãos são aqueles que inicialmente tinham um pai que criou o processo, mas depois de algum tempo, o processo pai morreu ou caiu sem querer, fazendo com que o init seja o pai desse processo. Tais processos têm init como pai imediato, que aguarda esses processos até que morram ou acabem.

Processo daemon

Estes são alguns processos intencionalmente órfãos, esses processos que são intencionalmente deixados no sistema são denominados como daemon ou processos intencionalmente órfãos. Eles geralmente são processos de longa duração que antes são iniciados e depois destacados de qualquer terminal de controle para que possam funcionar em segundo plano até que não sejam concluídos ou acabem lançando um erro. Pai de tais processos morre intencionalmente, fazendo com que a criança seja executada em segundo plano.

Técnicas para manter a sessão SSH em execução após a desconexão

Pode haver várias maneiras de deixar as sessões SSH em execução após a desconexão, conforme descrito abaixo:

1. Usando o comando de tela para manter as sessões SSH em execução

tela é um gerenciador de janelas de texto para o Linux que permite ao usuário gerenciar várias sessões de terminal ao mesmo tempo, alternando entre as sessões, o registro de sessão para as sessões de execução na tela e até retomando a sessão a qualquer momento, sem nos preocupar com a sessão de sessões registradas ou terminal sendo fechado.

As sessões de tela podem ser iniciadas e depois destacadas do terminal de controle, deixando -as em segundo plano e depois retomadas a qualquer momento e até em qualquer lugar. Só você precisa iniciar sua sessão na tela e quando quiser, separe-a do pseudo-terminal (ou do terminal de controle) e logout. Quando você se sentir, você pode re-login e retomar a sessão.

Iniciando uma sessão de tela

Depois de digitar 'tela' Comando, você estará em uma nova sessão de tela.

$ tela 
Sessão de tela inicial no Linux

Depois que a sessão de tela começou, você pode executar qualquer comando e manter a sessão executada desafiando a sessão.

Executar comandos na sessão de tela
Destacando uma tela

Apenas quando você deseja sair da sessão remota, mas você deseja manter a sessão que criou nessa máquina viva, então o que você precisa fazer é destacar a tela do terminal para que não tenha nenhum terminal de controle esquerdo. Depois de fazer isso, você pode fazer logout com segurança.

Para destacar uma tela do terminal remoto, basta pressionar “Ctrl+A” imediatamente seguido por "D" E você estará de volta ao terminal vendo a mensagem de que a tela está desapegada. Agora você pode fazer logout com segurança e sua sessão será deixada viva.

Descongendo a sessão de tela Linux
Retomando a sessão de tela destacada

Se você deseja retomar uma sessão de tela isolada que você deixou antes de fazer o login, basta re-login para um terminal remoto novamente e digitar “Screen -r” no caso de apenas uma tela for aberta e se várias sessões de tela forem abertas “Screen -r”.

$ tela -r $ tela -r  
Retomar a sessão de tela destacada

Para saber mais sobre o comando de tela e como usá -lo, basta seguir o link: use o comando de tela para gerenciar sessões do terminal Linux

2. Usando o TMUX (multiplexador de terminal) para manter as sessões SSH em execução

Tmux é outro software criado para ser um substituto para tela. Tem a maioria das capacidades de tela, com poucos recursos adicionais que o tornam mais poderoso que a tela.

Permite, além de todas as opções oferecidas por tela, dividindo painéis horizontal ou verticalmente entre várias janelas, painéis de redes de janelas, monitoramento de atividades de sessão, script usando o modo de linha de comando etc. Devido a essas características do TMUX, ele tem desfrutado de ampla adoção de quase todas as distribuições do UNIX e até foi incluído no sistema base do OpenBSD.

Inicie uma sessão do TMUX

Depois de fazer ssh no host remoto e digitar tmux, Você entrará em uma nova sessão com uma nova janela aberta à sua frente, onde você pode fazer o que fizer em um terminal normal.

$ tmux 
Inicie a sessão do terminal TMUX

Depois de executar suas operações no terminal, você pode destacar a sessão do terminal de controle para que ele entre em segundo plano e você possa fazer logout com segurança.

Executar comandos Linux na sessão TMUX
Destacar a sessão do TMUX do terminal

Ou você pode correr “Tmux destacar” Ao executar a sessão do TMUX ou você pode usar o atalho (Ctrl+B então D). Depois disso, sua sessão atual será destacada e você voltará ao seu terminal de onde poderá fazer logon com segurança.

$ tmux destacar 
Declare a sessão TMux no Linux
Retomando a sessão de TMux fechada

Para reabrir a sessão que você destacou e deixou como é quando você saiu do sistema, apenas re-login para a máquina remota e digite “TMUX Anex” Para recolocar para a sessão fechada e ela ainda estará lá e correndo.

$ tmux anexo 
Retomar a sessão fechada do TMUX

Para saber mais sobre o TMUX e como usá -lo, basta seguir o link: use o TMUX Terminal Multiplexador para gerenciar vários terminais Linux.

3. Usando o comando Nohup para continuar executando sessões SSH

Se você não está tão familiarizado com tela ou tmux, você pode usar nohup e envie seu comando de longa data para o fundo para que você possa continuar enquanto o comando continuar executando em segundo plano. Depois disso, você pode fazer logon com segurança.

Com o comando nohup, dizemos ao processo para ignorar o Sighup sinal que é enviado pela SSH Session on Termin, tornando o comando persistir mesmo após o logout da sessão. No logout da sessão, o comando é destacado de controlar o terminal e continua sendo executado em segundo plano como o processo Daemon.

Execução do comando usando nohup em segundo plano

Aqui está um cenário simples em que, executamos o comando Find para pesquisar arquivos em segundo plano na sessão SSH usando Nohup, após o qual a tarefa foi enviada para o fundo com o rápido retorno dando imediatamente PID e trabalho EU IA do processo ([Jobid] PID).

# nohup find / -type f $ gt; files_in_system.fora 2> 1 & 
Execute o comando linux em segundo plano
Retomando a sessão para visualizar se o trabalho ainda estiver em execução

Quando você re-login novamente, você pode verificar o status de comando, trazê-lo de volta ao primeiro plano usando 'FG %JOBID' para monitorar seu progresso e assim por diante. Abaixo, a saída mostra que o trabalho foi concluído, pois não aparece no re-login e deu a saída que é exibida.

# fg %jobid 
Execute o comando linux em segundo plano

4. Usando o comando DiEOWN para manter as sessões SSH em execução

Outra maneira elegante de deixar seu comando ou uma única tarefa executar em segundo plano e permanecer vivo mesmo após o logout ou desconexão da sessão é usando Denem.

Denem, Remove o trabalho da lista de trabalhos de processo do sistema, para que o processo seja protegido de ser morto durante a desconexão da sessão, pois não receberá Sighup pela concha quando você logout.

A desvantagem desse método é que, ele deve ser usado apenas para os trabalhos que não precisam de nenhuma entrada do stdin e nenhum deles precisa escrever para stdout, a menos que você redirecre especificamente a entrada e saída de trabalhos, porque quando o trabalho tentará interagir com stdin ou stdout, vai parar.

Execução do comando usando o DisOwn em segundo plano

Abaixo, enviamos ping comando para plano de fundo para que a UT continue correndo e seja removida da lista de empregos. Como visto, o trabalho foi suspenso pela primeira vez, após o que ainda estava na lista de empregos como ID do processo: 15368.

$ ping tecmint.com> pingout & $ jobs -l $ down -h %1 $ ps -ef | Grep ping 
Execute comandos Linux usando o Diensown

Depois que esse sinal de queninha foi passado para o trabalho, e foi removido da lista de empregos, embora ainda estivesse sendo executado em segundo plano. O trabalho ainda estaria em funcionamento quando você re-login para o servidor remoto, como visto abaixo.

$ ps -ef | Grep ping 
Verifique o status do trabalho

5. Usando o comando setsid para colocar as sessões SSH em execução

Outra utilidade para alcançar o comportamento necessário é SETSID. Nohup tem uma desvantagem no sentido de que o grupo de processos do processo permanece o mesmo, de modo que o processo em execução com Nohup é vulnerável a qualquer sinal enviado a todo o grupo de processos (como Ctrl + c).

SETSID Por outro lado, aloca um novo grupo de processo para o processo que está sendo executado e, portanto, o processo criado está totalmente em um grupo de processos recém -alocado e pode executar com segurança, sem medo de ser morto mesmo após o logout da sessão.

Executar qualquer comando usando setsid

Aqui, mostra que o processo 'Sono 10m' foi destacado do terminal de controle, desde o momento em que foi criado.

$ setsid Sleep 10m $ ps -ef | sono grep 
Execute o comando linux usando o setsid

Agora, quando você lançará novamente a sessão, você ainda encontrará esse processo em execução.

$ ps -ef | grep [s] leep 
Processo Linux em execução de fundo

Conclusão

De que maneira você poderia pensar para manter seu processo funcionando mesmo após o logout da SSH Session? Se houver alguma outra maneira e eficiente que você possa pensar, mencione em seus comentários.