Hallo Zusammen,
ich habe folgendes Problem.
Ich habe irgendwann auf Jessi und nun auf Stretch gewechselt und habe seit Jessi ein paar Probleme mit dem starten bei bestimmten handgemachten Scripte beim Systemstart.
Ich möchte vncserver schon während des bootens starten. Das funktioniert scheinbar nicht und ich habe keine Ahnung warum. Wenn ich die Startscripte per Hand aufrufe klappt alles reibunsgsfrei ohne Fehlermeldung:
"systemctl start vncserver.service"
Wenn ich von Runlevel 2 auf Runlevel 1 auf Runlevel 2 wechsel dann läuft vncserver auch.
Nur beim booten klappt es offensichtlich nicht.
Habt Ihr einen Tip?
Viele Grüße Andreas
die daemon.log -------------------------- Jul 8 15:38:07 jana vncserver[2832]: Starting vncserver for user 'daten' on localhost:1 ... Jul 8 15:38:10 jana vncserver[2832]: New 'vnc-server' desktop is jana:1 Jul 8 15:38:10 jana vncserver[2832]: Starting applications specified in /home/daten/.vnc/xstartup Jul 8 15:38:10 jana vncserver[2832]: Log file is /home/daten/.vnc/jana:1.log Jul 8 15:38:10 jana systemd[1]: Started Remote desktop service (VNC). ... Jul 8 15:38:23 jana systemd[1]: Reached target Multi-User System. Jul 8 15:38:23 jana systemd[1]: Starting Update UTMP about System Runlevel Changes... Jul 8 15:38:23 jana systemd[1]: Started Update UTMP about System Runlevel Changes. Jul 8 15:38:23 jana systemd[1]: Startup finished in 18min 39.259s (kernel) + 2min 47.264s (userspace) = 21min 26.523s. Jul 8 15:38:30 jana vncserver[3896]: Stoping vncserver for user 'daten' on localhost:1 Jul 8 15:38:30 jana vncserver[3896]: Killing Xtightvnc process ID 2993 Jul 8 15:38:30 jana vncserver[3896]: kill: (2993): Kein passender Prozess gefunden
--------------------------
für den Start gibt es zwei Scripte: Das erste ist die vncserver.service --------------------------- [Unit] Description=Remote desktop service (VNC) After=syslog.target network.target Wants=network-online.target
[Service] Type=forking User=daten ExecStart=/home/daten/bin/Software/vncserver start ExecStop=/home/daten/bin/Software/vncserver stop ExecReload=/home/daten/bin/Software/vncserver restart
[Install] WantedBy=multi-user.target
--------------------------
das zweite ist das eigentliche Startscript ------------------------- #!/bin/sh -e ### BEGIN INIT INFO # Provides: vncserver # Required-Start: $network # Required-Stop: $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 ### END INIT INFO
PATH="$PATH:/usr/X11/bin/:/usr/bin/"
# The Username:Group that will run VNC export USER="daten" #${RUNAS}
# The display that VNC will use DISPLAY="1"
# Color depth (between 8 and 32) DEPTH="16"
# The Desktop geometry to use. #GEOMETRY="<WIDTH>x<HEIGHT>" GEOMETRY="1024x768"
# The name that the VNC Desktop will have. NAME="vnc-server"
OPTIONS="-name ${NAME} -depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"
case "$1" in start) echo "Starting vncserver for user '${USER}' on localhost:${DISPLAY}" /bin/sh -c "/usr/bin/tightvncserver ${OPTIONS}" ;;
stop) echo "Stoping vncserver for user '${USER}' on localhost:${DISPLAY}" /bin/sh -c "/usr/bin/tightvncserver -kill :${DISPLAY}" ;;
required-stop) ;;
restart) $0 stop $0 start ;; esac
exit 0
Andreas Oettel rc5.dresden@gmx.de (Di 11 Jul 2017 13:17:41 CEST):
Hallo Zusammen,
ich habe folgendes Problem.
Ich habe irgendwann auf Jessi und nun auf Stretch gewechselt und habe seit Jessi ein paar Probleme mit dem starten bei bestimmten handgemachten Scripte beim Systemstart.
Zu den Scripten unten - warum machst Du das nicht alles in der Systemd-Unit?
Ich möchte vncserver schon während des bootens starten. Das funktioniert scheinbar nicht und ich habe keine Ahnung warum.
Was findest Du den im Log? (journalctl -u vncserver.service)
die daemon.log
Jul 8 15:38:07 jana vncserver[2832]: Starting vncserver for user 'daten' on
… Das ist doch das log von dem funktionierenden Staart, oder?
Best regards from Dresden/Germany Viele Grüße aus Dresden Heiko Schlittermann
Hallo Heiko,
On 11.07.2017 13:32, Heiko Schlittermann wrote:
Andreas Oettel rc5.dresden@gmx.de (Di 11 Jul 2017 13:17:41 CEST):
Hallo Zusammen,
ich habe folgendes Problem.
Ich habe irgendwann auf Jessi und nun auf Stretch gewechselt und habe seit Jessi ein paar Probleme mit dem starten bei bestimmten handgemachten Scripte beim Systemstart.
Zu den Scripten unten - warum machst Du das nicht alles in der Systemd-Unit?
Als ich damals den Umstieg auf Jessie durchgeführt habe, habe ich zwei Fehler gemacht. Erstens habe ich entgegen meinen Gepflogenheiten zuerst den Server und nicht den Backupserver umgestellt und ich hatte mich zweitens nicht über die Änderungen durch systemd informiert. Ende vom Lied war, dass ich einen für mich wichtigen Server im unbrauchbaren Zustand vorgefunden habe. Die Arbeitsweise von Systemd hatte ich nicht sofort verstanden, musste das System aber irgendwie hinfrickeln. Das Verständnis für Systemd kam erst dieses Wochenende so langsam.
Groß rumexperimentieren kann ich nicht, da zwischen mir und dem Rechner 600 km liegen. Ich kann den Rechner aus der Ferne neu starten, habe aber immer ein etwas schlechtes Gefühl dabei. Wenn die beiden Remotezugänge ssh bzw. vpn + vnc nicht zum laufen kommen, fahr ich einmal quer durch DE.
Ich werde das aber angehen müssen.
Ich möchte vncserver schon während des bootens starten. Das funktioniert scheinbar nicht und ich habe keine Ahnung warum.
Was findest Du den im Log? (journalctl -u vncserver.service)
journalctl -u vncserver.service liefert mir:
-- No entries --
systemctl status vncserver.service liefert mir:
● vncserver.service - Remote desktop service (VNC) Loaded: loaded (/lib/systemd/system/vncserver.service; enabled; vendor preset: enabled) Active: inactive (dead) since Sat 2017-07-08 15:38:30 CEST; 3 days ago Process: 3896 ExecStop=/home/daten/bin/Software/vncserver stop (code=exited, status=0/SUCCESS) Process: 2832 ExecStart=/home/daten/bin/Software/vncserver start (code=exited, status=0/SUCCESS)
Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
Ich gehe jetzt mal davon aus, dass ich am Wochenende den vncserver direkt über mein altes Startscript gestartet habe: /home/daten/bin/Software/vncserver start
Und nicht über: systemctl start vncserver.service
die daemon.log
Jul 8 15:38:07 jana vncserver[2832]: Starting vncserver for user 'daten' on
… Das ist doch das log von dem funktionierenden Start, oder?
Das hatte ich zuerst auch gedacht, jedoch versucht das System wenige Sekunden später den Prozess zu beenden, was aber wiederrum nicht geht, da der Prozess mit der ID 2993 nicht existiert. Der war also schon im Nirwana.
Jul 8 15:38:30 jana vncserver[3896]: Killing Xtightvnc process ID 2993 Jul 8 15:38:30 jana vncserver[3896]: kill: (2993): Kein passender Prozess gefunden
Ich frage mich an dieser Stelle warum Xtightvnc (der ja hinter vncserver steht) überhaupt gekillt werden soll. Wer veranlasst das?
Vielen Dank und viele Grüße nach Dresden Andreas
On Dienstag, 11. Juli 2017 13:17:41 CEST Andreas Oettel wrote:
die daemon.log
Schau mal bitte in `sudo journalctl -u vncserver.service`, ob da noch mehr als das steht. Ich weiß nicht genau, wie das Syslog-Forwarding funktioniert. Normalerweise schreibt systemd auch ins Journal, wenn er die Unit starten will, aber nicht kann.
Ansonsten gehe ich mal davon aus, dass du natürlich `systemctl enable vncserver.service` gemacht hast? Liegt der richtige Symlink in /etc/systemd/ system/multi-user.target.wants?
[Unit] Description=Remote desktop service (VNC) After=syslog.target network.target Wants=network-online.target ... [Install] WantedBy=multi-user.target
WantedBy sieht erstmal gut aus, denn multi-user.target entspricht Runlevel 2 (laut `man 7 systemd.special`). Mach mal `systemd-analyze plot > bootchart.svg` und schau dir das Bild an, ob die Targets aus `After=` und `Wants=` beim Booten gestartet werden, bzw. ob der vncserver.service dort erwähnt wird.
Ansonsten kannst du das Bild auch gerne mal als Antwort schicken (sofern da nix geheimes drauf ist), dann schau ich mal genauer.
das zweite ist das eigentliche Startscript
Nicht das ursprüngliche Problem, aber da wir schon mal bei dem Thema sind: Das kannst du eigentlich alles in die systemd-Unit selber packen. Die Variablen (GEOMETRY etc.) kannst du in einer separaten Datei lassen und über das Feld EnvironmentFile= laden, siehe `man 7 systemd.exec` unter "EnvironmentFile=". Die Variablen dort können dann in ExecStart= und ExecStop= verwendet werden, also z.B. `ExecStart=/usr/bin/tightvncserver $OPTIONS`, siehe `man 7 systemd.service` unter "COMMAND LINES". ExecRestart= kannst du wegwerfen, systemctl ist schlau genug, dann selber `stop && start` zu machen.
Schöne Grüße Stefan
Hallo Stefan
On 11.07.2017 14:00, Stefan Majewsky wrote:
On Dienstag, 11. Juli 2017 13:17:41 CEST Andreas Oettel wrote:
die daemon.log
Schau mal bitte in `sudo journalctl -u vncserver.service`, ob da noch mehr als das steht.
leider nein, da ich den vncserver am Wochenende letztendlich nicht über "systemctl start vncserver.service" gestartet habe.
Ansonsten gehe ich mal davon aus, dass du natürlich `systemctl enable vncserver.service` gemacht hast? Liegt der richtige Symlink in /etc/systemd/ system/multi-user.target.wants?
Der Link ist dort abgelegt. Ob ich jedoch "systemctl enable vncserver.service" ausgeführt hatte, kann ich gar nicht sagen. Ich habe es nochmal nachgeholt. Geändert hat sich offensichtlich nichts.
[Unit] Description=Remote desktop service (VNC) After=syslog.target network.target Wants=network-online.target ... [Install] WantedBy=multi-user.target
WantedBy sieht erstmal gut aus, denn multi-user.target entspricht Runlevel 2 (laut `man 7 systemd.special`). Mach mal `systemd-analyze plot > bootchart.svg` und schau dir das Bild an, ob die Targets aus `After=` und `Wants=` beim Booten gestartet werden, bzw. ob der vncserver.service dort erwähnt wird.
systemd-analyze plot bootchart.svg erzeugt eine Datei, an der sich Gimp (Linux) und Inkscape (Windows) verschlucken. Die Zeitachse ist zu lang und damit die Anzahl der dargestellten Objekte scheinbar zu groß. Danke aber für den Hinweis von der Analysemöglichkeit. Die kannte ich nicht. Ich werde mir, wenn ich den Rechner neu gestartet habe, die Targets mal anschauen.
Morgen werde ich mal mit systemctl show ... und systemctl status ... die Targets abklopfen.
Ansonsten kannst du das Bild auch gerne mal als Antwort schicken (sofern da nix geheimes drauf ist), dann schau ich mal genauer.
das zweite ist das eigentliche Startscript
Nicht das ursprüngliche Problem, aber da wir schon mal bei dem Thema sind: Das kannst du eigentlich alles in die systemd-Unit selber packen. Die Variablen (GEOMETRY etc.) kannst du in einer separaten Datei lassen und über das Feld EnvironmentFile= laden, siehe `man 7 systemd.exec` unter "EnvironmentFile=". Die Variablen dort können dann in ExecStart= und ExecStop= verwendet werden, also z.B. `ExecStart=/usr/bin/tightvncserver $OPTIONS`, siehe `man 7 systemd.service` unter "COMMAND LINES". ExecRestart= kannst du wegwerfen, systemctl ist schlau genug, dann selber `stop && start` zu machen.
Ja das muss ich mal angehen. Ich hatte bisher jedoch noch nie die Zeit dafür gefunden. In das Thema systemd muss ich mich erst tiefer einarbeiten.
Vielen Dank und viele Grüße Andreas
lug-dd@mailman.schlittermann.de