So, bezüglich Systemd habe ich jetzt doch noch eine halbwegs funktionierende Lösung gefunden.
Sie hat allerdings noch ein paar Mängel, für die ich noch keine Lösung gefunden habe.
Dazu mehr weiter unten.
Anleitung:
Der Inhalt der Datei sollte als tigervncserver@.service im Verzeichnis /etc/systemd/system/ gespeichert werden.
Das @ ist wichtig, da es zum substituieren von %i in der Config notwendig ist.
| sudo nano /etc/systemd/system/tigervncserver@.service
|
USER muss hierbei mit eurem Benutzeraccountnamen den ihr auf eurem Server habt, ersetzt werden.
[Unit]
Description=Start TigerVNC Server (VNC)
After=syslog.target network.target
[Service]
Type=simple
User=USER
Group=USER
WorkingDirectory=/home/USER
PAMName=login
PIDFile=/home/USER/.vnc/%H:%i.pid
ExecStartPre=/usr/bin/tigervncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/tigervncserver -verbose -fg :%i
ExecStop=/usr/bin/tigervncserver -kill :%i
# After exit, we want our service to restart
Restart=on-success
RestartSec=10
[Install]
WantedBy=multi-user.target
Um die Konfigurationsdatei dem systemd System bekannt zu machen, muss,
nachdem ihr die Datei gespeichert habt, folgender Befehl einmalig aufgerufen werden:
| sudo systemctl daemon-reload
|
Starten kann man den Systemd Dienst jetzt mit folgendem Befehl. DISPLAYNUMMER muss mit einer Zahl ersetzt werden.
Z.B. 1 oder 2.:
| sudo systemctl start tigervncserver@DISPLAYNUMMER.service
|
Ob der Dienst fehlerfrei gestartet wurde, könnt ihr mit folgendem Befehl nachprüfen:
| sudo systemctl status tigervncserver@DISPLAYNUMMER.service
|
In der Ausgabe sollte dann "Active: active (running)" grün hervorgehoben stehen.
Natürlich kann man das auch mit folgendem Befehl noch nachprüfen, ob alles wie gewünscht läuft.
Wenn das nicht der Fall ist, muss man in die Log Dateien schauen. Siehe dazu der Artikel.
Solange der Dienst läuft, kann man sich nun wie gehabt, siehe Artikel mit ssh in die VNC Sitzung einloggen.
Beenden kann man den Dienst mit:
| sudo systemctl stop tigervncserver@DISPLAYNUMMER.service
|
Und wenn man möchte, dass der Dienst bei jedem Reboot gestartet wird, kann man folgendes ausführen:
| sudo systemctl enable tigervncserver@DISPLAYNUMMER.service
|
Es gibt hier aber noch zwei Mängel:
1. Wenn man das VNC Fenster nicht über das x schließt, sondern sich auf dem darauf laufenden Desktop
über dessen Abmeldemenü abmeldet, dann wird auf dem Server tigervnc beendet, ohne das Systemd etwas
das erfährt.
SystemD zeigt dann bei der Abrage des Status einen Fehler an.
2. Die Optionen
# After exit, we want our service to restart
Restart=on-success
RestartSec=10
in der Konfigurationsdatei tun nicht das, was sie sollen. Systemd starter tigervnc nicht wieder neu.
Wünschenswert wäre, egal was der Clientrechner macht, also ob er sich über das Menü des Desktops in dem VNC Fenster abmeldet oder er das Fenster einfach nur
schließt, so sollte systemd auf jeden Fall tigervnc wieder starten, wenn dieser aus irgendeinem Grund, der nicht über systemd erfolgt ist, beendet wurde.
Hier suche ich noch eine Lösung. Wer eine hat, der kann mir die gerne nennen. Danach kann man das schön in den Artikel einbauen und den Dienst mit enable dauerhaft laufen lassen.