Połączyłem się z serwerem przez SSH i zalogowałem się do mysql, i poprosiłem go o uruchomienie zapytania (którego wyniki są wrzucane do pliku CSV), które może zająć znacznie ponad godzinę. Mimo że poinstruowałem mojego klienta, aby wysyłał pakiety zerowe co 60 sekund, aby sesja była aktywna, nadal jestem paranoikiem, że kwerenda / proces mysql może zostać zakończona, więc moje pytania są następujące:
- Czy anulowana sesja ssh (z powodu braku aktywności) zabije proces zapytania mysql?
- Jak mogę się upewnić, że tak się nie stanie - czy pakiet zerowy wysyła co 60 sekund?
nohup
podczas logowania do mysql, to utrzyma zapytania wewnątrz?nohup
nie przyda ci się dużo, ponieważ mysql REPL nie zostanie dołączony do terminala. Zamiast tego spróbuj użyć jednego z multiplekserów (lub dtach), o których wspomniałem powyżej, prawdopodobnie będą lepiej odpowiadały Twoim potrzebom.Zacząłem uruchamiać
screen
sesje, kiedy ssh w polu, częściowo, aby temu zapobiec, a jako dodatkowy bonus, dostaję wiele kart, nie mogę go pokonać. Jeśli z jakiegoś powodu jestem rozłączony, mogę ponownie dołączyć do sesji ekranowej.Aktualizacja
Aby odpowiedzieć # 2, pobiegłbym
mysql
z poziomu powłoki bash przez sesję screen. Brzmi skomplikowanie, ale to po prostu:Możesz edytować plik ~ / .screenrc, aby dodać podpisy na dole sesji ekranowej, dzięki czemu możesz śledzić swoje karty, zmieniać nazwy kart itp. Jeśli kiedykolwiek się rozłączysz, po ponownym połączeniu po prostu uruchom
i to pokaże wszelkie odłączone sesje. Aby ponownie podłączyć, po prostu uruchom coś takiego
Lub jakikolwiek identyfikator sesji ekranowej. Jesteś dokładnie tam, gdzie skończyłeś. Musisz jednak działać
screen -d
jako ten sam użytkownik, który rozpoczął sesję ekranową, po prostu fyi lub root. Nie jestem do końca pewien, ponieważ po ssh zawsze jestem w stanie,sudo su -
więc nie muszę powtarzać każdego polecenia.źródło
screen
jest trafna, nie odpowiada ona bezpośrednio na dwa pytania wymienione przez PO.