Trabalhos em segundo plano

Trabalhos em segundo plano

Estou conectado a um servidor através de ssh e quero executar um processo que demorará muito. Eu me conecto ao servidor usando ssh no terminal do meu laptop, mas quero poder desligar meu laptop, mas ainda ter o progresso em execução no servidor. Como são dois computadores separados, parece que devo conseguir fazer isso, mas não tenho certeza se é possível através do ssh.

Responder1

É bastante simples, adicione um &após o seu comando, digamos, por exemplo

bash script.sh &

Ele continuará sua execução mesmo se você sair da sessão ou fechar o terminal.
Outra maneira é usar nohupo comando e executar seu comando. Por exemplo

nohup bash script.sh

Encontre mais usando man nohupe sigaessequestão que tem direção semelhante.

Responder2

Trabalhos em segundo plano

Para executar em segundo plano

program &

Para executar em segundo plano e continuar após desconectar. Também redireciona stdoutpara ~/nohup.out.

nohup program &

O mesmo, mas redireciona para outro arquivo

nohup program > "another file" &

Observação para os comandos acima, você pode ver os trabalhos em segundo plano com o jobscomando.

Igual, mas removido da lista de empregos

nohup program > "another file" & disown

Sessões persistentes

Veja gnu screen, tmuxe vnc. Eles permitem que você mantenha uma sessão aberta enquanto estiver desconectado.

Gnuscreen

#create a screen session (do this once)
screen -d -m

#attach to the session
screen -x

Você também pode ter mais de uma (sessões nomeadas)

#create a screen session (do this once)
screen -d -m -S a_name

#attach to the session
screen -x -S a_name

Cuidado, pois ctrl_a é usado para controlar a tela, quando estiver dentro. ctrl_a ctrl_a para passar ctrl_a para o shell.

VNC

#create a vnc session (do this once)
vncserver -from 127.1.0.1 -geometry 1920x1000 :10

#attach to the session (from a remote machine)
ssvnc Vnc+ssh://«user»@«machine-name»:10

Altere a geometria para corrigir sua exibição, talvez altere o número da exibição.

Notas:

Qualquer pessoa na máquina local pode se conectar à sessão VNC.

Você pode adicionar -SecurityTypes Nonepara desativar a segurança do VNC, se tiver segurança suficiente via ssh.

127.1.0.1está na faixa de loopback. Somente processos na máquina local podem se conectar. Você pode se conectar remotamente via ssh(ssvnc). Você pode usar nftablespara restringir quais usuários podem se conectar ao 127.1.0.1. Existem muitos endereços na faixa de loopback 127.0.0.1( 127.255.255.254cerca de 16 milhões), então você pode alocar um para cada usuário e ainda ter sobras.

informação relacionada