O comando continua saindo, apesar do uso de 'nohup'

1

O que estou fazendo de errado aqui?

Eu faço o login no primeiro servidor (usando o putty) e executo a seguinte consulta:

sh -c 'nohup mysqldump -hxxx -Pxxx -uxxx -pxxx --dump-slave --include-master-host-port --apply-slave-statements -f -q -A -E -R | mysql -hxxxx -Pxxxx -uxxxx -pxxxx' &

Se eu olhar nos dois bancos de dados, posso ver que o MySQLDump está rodando no primeiro e sendo importado no segundo.

Mas a instância que eu fecho minha sessão Putty, (ou expira) o mysqldump para de rodar. Eu pensei que usar nohup deveria mantê-lo funcionando ??

Como vai demorar 8 horas para correr, não posso ficar sentado olhando para Putty por 8 horas para parar o tempo limite.

    
por IGGt 17.11.2015 / 14:26

2 respostas

2

Como você executa o shell sem nohup , ele recebe o sinal SIGHUP quando você fecha a sessão e a envia para todos os processos no pipeline. Como o segundo comando mysql é, novamente, executado sem nohup , ele encerra e envia SIGPIPE para nohup mysqldump , que por sua vez termina.

Tente

nohup sh -c 'mysqldump -hxxx -Pxxx -uxxx -pxxx --dump-slave --include-master-host-port --apply-slave-statements -f -q -A -E -R | mysql -hxxxx -Pxxxx -uxxxx -pxxxx' &
    
por 17.11.2015 / 14:34
1

De alguma forma, e admito que não sei bem como eu, o nohup não está protegendo os bits corretos. Felizmente, há uma solução - inicie esse processo dentro de uma sessão screen ou tmux no primeiro servidor. então você pode desconectar a sessão screen / tmux e fechar sua janela PuTTY, e o MySQL dump / import ainda estará rodando.

    
por 17.11.2015 / 14:29

Tags