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 nohup
o comando e executar seu comando. Por exemplo
nohup bash script.sh
Encontre mais usando man nohup
e 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 stdout
para ~/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 jobs
comando.
Igual, mas removido da lista de empregos
nohup program > "another file" & disown
Sessões persistentes
Veja gnu screen
, tmux
e 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 None
para desativar a segurança do VNC, se tiver segurança suficiente via ssh
.
127.1.0.1
está na faixa de loopback. Somente processos na máquina local podem se conectar. Você pode se conectar remotamente via ssh
(ssvnc). Você pode usar nftables
para 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.254
cerca de 16 milhões), então você pode alocar um para cada usuário e ainda ter sobras.