Atualmente, estou executando um backup e agora ele precisa ser transferido para um destacável, como em tmux
ou screen
. Existe uma maneira de fazer isso quando o comando está sendo executado atualmente?
Eu posso enviar o comando em segundo plano pressionando Ctrl+ Ze colocá-lo novamente, emitindo um fg
comando. mas não sei se essa sessão pode voltar quando eu sair do terminal.
command-line
shell
gnu-screen
tmux
Jürgen Paul
fonte
fonte
Respostas:
Isso funciona, na maioria das vezes:
Pré-requisitos: ter
reptyr
etmux
/screen
instalado; você poderá encontrá-los comapt-get
ouyum
, dependendo da sua plataforma.Use Ctrl+ Zpara suspender o processo.
Continue o processo em segundo plano com
bg
Encontre o ID do processo em segundo plano com
jobs -l
Você verá algo semelhante a este:
Rejeitar o trabalho do pai atual (shell) com
disown yourprocessname
Iniciar
tmux
(preferencial) ouscreen
.Reconecte o processo à sessão
tmux
/screen
com reptyr:Agora você pode desconectar o multiplexador (padrão Ctrl+ B, Dfor
tmux
ou Ctrl+ A, Dforscreen
) e desconectar o SSH enquanto o processo continua emtmux
/screen
.Mais tarde, quando você se conectar ao SSH novamente, poderá conectar-se ao seu multiplexador (por exemplo
tmux attach
).fonte
sudo reptyr 1430
, ainda recebi: "... [-] Incapaz de abrir o tty na criança. Incapaz de anexar ao pid 1430: Permissão negada"echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
bg
, o processo deve ser em execução em segundo plano, por issojobs
deve dizerRunning
, em vez deStopped
.reptyr
é bom, mas recebi um erro de permissãoEntão encontrado
-L Like '-l', but also redirect the child's stdio to the slave.
que funcionou como um encanto
fonte
-L
, recebi uma mensagem como a sua dizendo,Opened a new pty: /dev/pts/6
mas meu suspensotop
não apareceu no tmux. O que estou perdendo aqui?você pode usar disown para desanexar o trabalho de seu terminal, se esse comando estiver disponível.
No entanto, é mais seguro executá-lo com nohup.
fonte
nohup
? Como funcionadisowning
um processo?