"nohup"을 사용해도 명령이 종료됩니다.

"nohup"을 사용해도 명령이 종료됩니다.

내가 여기서 뭘 잘못하고 있는 걸까?

퍼티를 사용하여 첫 번째 서버에 로그인하고 다음 쿼리를 실행했습니다.

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' &

두 데이터베이스를 모두 살펴보면 MySQLDump가 첫 번째 데이터베이스에서 실행되고 두 번째 데이터베이스에서 가져오는 것을 볼 수 있습니다.

그러나 Putty 세션(또는 시간 초과)을 닫으면 mysqldump 실행이 중지됩니다. 나는 nohup계속 실행해야한다고 생각 했습니까?

실행하는데 8시간 정도 걸리기 때문에 타임아웃을 막기 위해 거기 앉아서 8시간 동안 Putty를 지켜볼 수는 없습니다.

답변1

없이 셸을 실행하고 있으므로 세션을 닫으면 nohup신호를 수신하여 파이프라인의 모든 프로세스로 보냅니다. SIGHUP두 번째 mysql명령은 가 없이 다시 실행되므로 nohup종료되고 로 전송되고 SIGPIPEnohup mysqldump종료됩니다.

노력하다

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' &

답변2

nohup어쨌든 나는 그것이 올바른 비트를 보호하지 않는다는 것을 완전히 확신하지 못한다는 것을 인정합니다 . 다행히도 해결책이 있습니다. 첫 번째 서버나 세션 내에서 screen이 프로세스를 시작하세요 . 그런 다음 / 세션 tmux연결을 끊고 PuTTY 창을 닫아도 MySQL 덤프/가져오기는 계속 실행됩니다.screentmux

관련 정보