Wenn Sie eine SSH-Verbindung zu einer Linux-Distribution mit systemd herstellen, können Sie systemd-run
verwenden um einen Prozess im Hintergrund zu starten (in den Begriffen von systemd "ein vorübergehender Dienst"). Angenommen, Sie möchten im Hintergrund etwas pingen:
systemd-run --unit=pinger ping 10.8.178.3
Der Vorteil, den Sie mit systemd erhalten, gegenüber dem einfachen Ausführen eines Prozesses mit nohup
ist, dass systemd den Prozess und seine untergeordneten Prozesse verfolgt, Protokolle führt, sich den Exit-Code merkt und es Ihnen ermöglicht, den Prozess und alle seine untergeordneten Prozesse sauber zu beenden. Beispiele:
Sehen Sie sich den Status und die letzten Zeilen der Ausgabe an:
systemctl status pinger
Ausgabe streamen:
journalctl -xfu pinger
Töten:
systemctl kill pinger
Als Alternative zu nohup
, könnten Sie Ihre Remote-Anwendung in einem Terminal-Multiplexer wie GNU screen
ausführen oder tmux
.
Die Verwendung dieser Tools macht es einfach, sich von einem anderen Host aus wieder mit einer Sitzung zu verbinden, was bedeutet, dass Sie einen langen Build oder Download abbrechen können, bevor Sie die Arbeit verlassen, und den Status überprüfen, wenn Sie nach Hause kommen. Zum Beispiel. Ich finde dies besonders nützlich, wenn ich Entwicklungsarbeit auf sehr abgelegenen Servern (in einem anderen Land) mit unzuverlässiger Verbindung zwischen mir und ihnen mache. Wenn die Verbindung unterbrochen wird, kann ich mich einfach wieder verbinden und weitermachen, ohne irgendeinen Zustand zu verlieren.