Dies ist (noch) nicht getestet, könnte aber funktionieren.
Nachdem Sie sich angemeldet haben (über SSH mit PuTTY oder was auch immer), starten Sie eine neue tmux
Sitzung (die ich benutze tmux
, aber Sie können wählen screen
), als ob Sie in einer Shell arbeiten möchten. Der einfache Befehl tmux
funktioniert, aber nennen wir die Sitzung:
tmux new-session -s foo
Dann finden Sie die PID von Ihrem service
:
pidof service
und verwenden Sie es reptyr
, um es an Ihr aktuelles Terminal anzuschließen, das sich im Inneren befindet tmux
(ich denke, dass Sie dies ebenfalls benötigen sudo
). In dieser Antwort von mir finden Sie kurze Merkmale reptyr
und was zu tun ist, damit es funktioniert.
reptyr <pid>
Wenn Sie sich abmelden möchten, nehmen Sie zuerst aus tmux
mit Ctrl+ B, D(für screen
es ist Ctrl+ A, D). Später können Sie mit zu diesem Terminal zurückkehren
tmux attach-session -t foo
Sie müssen also reptyr
erst nach dem nächsten Neustart erneut verwendet werden.
Wenn ich Sie wäre, würde ich versuchen, den Dienst von innen heraus auszuführen. tmux
Ich gehe davon aus, dass dies tmux
ohne Umwege mit TTY verbunden wäre systemd
. Siehe dazu: Wie läuft man tmux
/ screen
mit systemd
> 230?
So etwas wie:
… [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/bin/tmux new-session -d -s foo /path/to/my/service User=username …
Wenn dies funktioniert, müssen Sie tmux attach-session …
den richtigen Benutzer ausführen :
sudo -u username tmux attach-session -t foo