5 maneiras de manter as sessões e processos SSH remotos em execução após a desconexão
- 4295
- 348
- Mrs. Christopher Okuneva
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ãoQuando 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.
$ telaSessã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 telaDestacando 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.
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 -rRetomar 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.
$ tmuxInicie 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 TMUXDestacar 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 destacarDeclare 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 anexoRetomar 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 %jobidExecute 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 pingExecute 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 pingVerifique 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 grepExecute 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] leepProcesso 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.
- « Como instalar o navegador Sqlite e Sqlite no Ubuntu
- GDU - um analisador de uso de disco muito rápido para Linux »