답변:
대부분의 쉘은 종료시 포 그라운드 프로세스 그룹으로 SIGHUP을 보내고 (그리고 일부 백그라운드 프로세스도 bash에서는 쉘 옵션으로 제어됩니다 huponexit
) mysql 클라이언트가 처리하는 방식에 따라 죽을 수 있습니다.
nohup
쉘이 SIGHUP을 전송하는지 여부에 관계없이 쉘이 종료되면 init에 의해 reparented 명령을 실행할 수 있습니다 (init에 의해 reparented되는 것은 nohup과 관련이 없습니다-그것은 단지 부모보다 오래되었습니다).
아마도 더 맛이 솔루션을 사용하는 것 tmux
, screen
, dtach
또는 클라이언트를 실행할 유사한 쉘 및 터미널 제어에서 멀리 추상화. 이렇게하면 셸 연결이 끊어지면 쿼리를 실행중인 세션에 다시 연결하기 만하면됩니다.
일반적으로 keepalive 패킷은 중요하지 않으며 연결은 아무 이유없이 종료되지 않습니다. 더 시급한 문제는 다른 이유로 (네트워크 장애 등) 클라이언트와 서버 간의 연결이 끊어지는 것입니다.
nohup
하려면 mysql REPL이 터미널에 연결되지 않으므로 많이 사용하지 않을 것입니다. 위에서 언급 한 멀티플렉서 (또는 dtach) 중 하나를 대신 사용해보십시오. 아마도 필요에 더 잘 맞을 것입니다.
나는 실행 시작했습니다 screen
나는 상자에 ssh를 할 때 부분적 것을 방지하기 위해, 세션 및 추가 보너스로, 나는 여러 개의 탭을 얻을, 그것을 이길 수 없습니다. 어떤 이유로 연결이 끊어지면 화면 세션에 다시 연결할 수 있습니다.
최신 정보
# 2에 대답하기 mysql
위해 bash 쉘 내에서 스크린 세션을 통해 실행 합니다. 복잡하게 들리지만, 그냥 :
$: screen
$: mysql
~ / .screenrc 파일을 편집하여 화면 세션의 맨 아래에 캡션을 추가하여 탭을 추적하고 탭의 이름을 바꾸는 등의 작업을 수행 할 수 있습니다. 연결이 끊긴 경우 다시 연결하면 간단히
$: screen -d
분리 된 세션이 표시됩니다. 다시 연결하려면 다음과 같이 실행하십시오.
$: screen -r 551.pts-0.git
또는 스크린 세션의 ID가 무엇이든. 당신은 당신이 중단 한 곳으로 돌아 왔습니다. 당신은 실행해야 screen -d
하지만 화면 세션을 시작 동일한 사용자 물론 단지 참고로, 또는 루트로. 나는 항상 ssh 한 후에 sudo su -
모든 명령을 sudo 할 필요가 없기 때문에 확실 하지 않습니다.
screen
은 적절하지만 OP에 의해 나열된 두 가지 질문에 직접 대답하지는 않습니다.
nohup
에 로그인 할 때 추가 하는 한 쿼리가 내부에서 실행됩니까?