Ich habe über SSH eine Verbindung zu einem Server hergestellt, mich bei mysql angemeldet und ihn gebeten, eine Abfrage auszuführen (deren Ergebnisse in einer CSV-Datei gespeichert werden), die weit über eine Stunde dauern kann. Obwohl ich meinen Client angewiesen habe, alle 60 Sekunden Null-Pakete zu senden, um die Sitzung aktiv zu halten, bin ich immer noch paranoid, dass die mysql-Abfrage / der mysql-Prozess abgebrochen werden könnte. Meine Fragen lauten also:
- Bricht eine abgebrochene SSH-Sitzung (aufgrund von Inaktivität) den Mysql-Abfrageprozess ab?
- Wie kann ich sicherstellen, dass dies nicht passiert? Reicht der Null-Paketversand alle 60 Sekunden aus?
nohup
anmelde, bleiben die darin ausgeführten Abfragen bestehen.nohup
ist dies für Sie nicht von großem Nutzen, da die mysql-REPL nicht an das Terminal angehängt wird. Versuchen Sie es mit einem der oben genannten Multiplexer (oder dtach), die Ihren Anforderungen wahrscheinlich besser entsprechen.Ich habe angefangen,
screen
Sessions zu starten, wenn ich in eine Box gehe, teilweise um dies zu verhindern, und als zusätzlichen Bonus bekomme ich mehrere Tabs, die ich nicht übertreffen kann. Wenn ich aus irgendeinem Grund nicht verbunden bin, kann ich eine neue Verbindung zu meiner Bildschirmsitzung herstellen.Aktualisieren
Um # 2 zu beantworten, würde ich
mysql
aus einer Bash-Shell durch eine Bildschirmsitzung laufen . Klingt kompliziert, ist aber nur:Sie können Ihre ~ / .screenrc-Datei bearbeiten, um am unteren Rand der Bildschirmsitzung Beschriftungen hinzuzufügen, damit Sie Ihre Registerkarten nachverfolgen, Ihre Registerkarten umbenennen usw. Wenn Sie jemals die Verbindung getrennt haben, führen Sie sie einfach aus, wenn Sie die Verbindung wiederherstellen
und das zeigt alle getrennten Sitzungen. Zum erneuten Anschließen einfach so etwas wie ausführen
Oder wie auch immer die ID der Bildschirmsitzung lautete. Sie sind wieder da, wo Sie aufgehört haben. Sie müssen jedoch
screen -d
als derselbe Benutzer ausgeführt werden, der die Bildschirmsitzung gestartet hat, nur zu Ihrer Information, oder natürlich als root. Ich bin mir nicht wirklich sicher, weil ich nach dem Einspielen immersudo su -
so nicht jeden Befehl sudo muss.quelle
screen
ist zwar gut, beantwortet aber nicht direkt die beiden vom OP aufgeführten Fragen.