Seite 1 von 2

autom. Daten-Update, autom. Beenden?

Verfasst: 03 Jun 2022, 15:09
von halgrunt
Moinsens!

TVB aktualisiert beim Start automatisch alle Daten, wie eingestellt. Gibt es jetzt aber eine Möglichkeit, TVB nach Ende des Updates auch wieder automatisch zu beenden?

Hintergrund: TVB läuft u.a. auf einem Linux-Server und hat dort eigentlich nur die Aufgabe, die Daten aktuell zu halten. Er soll aber nicht dauerhaft laufen. Die tvdata werden dann von 2, 3 Win10-Rechner benutzt, denen ich gerne immer die aktuellen Daten präsentieren würde, ohne dass diese ein Update machen müssen.

Auf dem Linux-Rechner würde ich dann gerne z.B. nachts um 3 Uhr TVB per cron starten, die Daten aktualisieren lassen und dann TVB wieder beenden. Läßt sich das bewerkstelligen?

TVB soll dabei auf dem Linux-Rechner auch "regulär" benutzbar bleiben. Manchmal sitze ich auch an dem und bastel mit Fritzing oder Python.

Gruß, Michael

Re: autom. Daten-Update, autom. Beenden?

Verfasst: 03 Jun 2022, 16:49
von Agrivaine
Hi,
da würde sich IMO timeout anbieten. Wenn er bspw. 2-3 Minuten für ein Update benötigt, startest du ihn mittels "timeout" in deinem cronjob und lässt ihn darüber nach zB. 10 Minuten automatisch beenden.

Re: autom. Daten-Update, autom. Beenden?

Verfasst: 03 Jun 2022, 21:36
von Jo
Die meisten Sender sollten fast immer um 3 Uhr aktuelle Daten haben, aber um ganz sicher zu sein nimm was späteres, wenn die Zeit bei dir nicht wichtig ist.

Re: autom. Daten-Update, autom. Beenden?

Verfasst: 03 Jun 2022, 22:39
von halgrunt
Danke euch für die Antworten. An "timeout" hätte ich jetzt gar nicht gedacht, hab es bislang noch nie benutzt. Das funktioniert grundsätzlich. Genial.

Ich war eigentlich auf dem Trichter, möglichst kein "kill" o.ä. zu benutzen, aber ach, egal... ;-) (Ich hatte auf einen Commandline-Parameter /quit o.s.ä. gehofft.)

Die Uhrzeit an sich ist tatsächlich unkritisch, kann auch um 5 sein oder so. Hauptsache über Nacht.

Jetzt hab ich nur das Problem, dass tvbrowser.sh abbricht, weil (über cron) kein Display verfügbar ist.

Code: Alles auswählen

Starting TV-Browser...
[ . . . ]
java.lang.NullPointerException
        at tvbrowser/tvbrowser.TVBrowser.main(TVBrowser.java:369)
[ . . . ]
21:07:02 SCHWERWIEGEND: UNCAUGHT EXCEPTION IN THREAD 'main'
java.awt.HeadlessException: 
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
        at java.desktop/java.awt.SplashScreen.getSplashScreen(SplashScreen.java:127)
        at tvbrowser/tvbrowser.ui.splashscreen.SplashScreen.<init>(SplashScreen.java:74)
        at tvbrowser/tvbrowser.TVBrowser.main(TVBrowser.java:562)
TV-Browser TERMINATED.
Kriegt man das noch irgendwie hin?

Gruß, Michael

Re: autom. Daten-Update, autom. Beenden?

Verfasst: 03 Jun 2022, 23:52
von ds10
Wenn du der Kommandozeile ein DISPLAY=:0 (Leerzeichen nach der Nummer beachten) voran stellst, wird das Programm auf dem Display mit dieser Nummer gestartet. Wie deine Display-Nummer aussieht lässt sich per echo $DISPLAY im Terminal herausfinden.

EDIT: Um TV-Browser korrekt zu beenden kannst du dir das Plugin TV-BrowserNetControl (tvb://show/pluginUpdate=TV-BrowserNetControl;select) installieren. In den Einstellungen des Plugins (tvb://show/settings=java.tvbnetcontrol.TvbNetControl) findest du dann die Portnummer an die Befehle zur Fernsteuerung gesendet werden können. Wenn der Fenstermanager mitspielt (gerade mit Mate getestet und hat dort nicht funktioniert, unter Unity geht es) kann dann zum Beenden von TV-Browser auf der Konsole echo -n "kf_alt+f4" >/dev/udp/localhost/PORTNUMMER aufgerufen werden.

Re: autom. Daten-Update, autom. Beenden?

Verfasst: 04 Jun 2022, 18:40
von ds10
Ich habe NetControl etwas geändert, so dass beim Senden von kf_alt+f4 der Fenstermanager kein Problem mehr darstellt und TV-Browser auf jeden Fall beendet wird, wenn der Befehl empfangen wurde.

Re: autom. Daten-Update, autom. Beenden?

Verfasst: 04 Jun 2022, 23:43
von halgrunt
ds10 hat geschrieben: 03 Jun 2022, 23:52 Wenn du der Kommandozeile ein DISPLAY=:0 (Leerzeichen nach der Nummer beachten) voran stellst, wird das Programm auf dem Display mit dieser Nummer gestartet. Wie deine Display-Nummer aussieht lässt sich per echo $DISPLAY im Terminal herausfinden.
Ah, danke, das hört sich gut an.

Als $DISPLAY habe ich

Code: Alles auswählen

:10.0
Aber wo soll ich dann

Code: Alles auswählen

DISPLAY=:10.0
unterbringen? In eine der letzten Zeilen von
/usr/share/tvbrowser/tvbrowser.sh

Code: Alles auswählen

echo $MSG0

cd ${PROGRAM_DIR}

echo "${JAVA_PROGRAM_DIR}java -Xms16m -Xmx1G --module-path="lib:tvbrowser.jar" -Djava.library.path=\"${PROGRAM_DIR}\" -sp>
${JAVA_PROGRAM_DIR}java -Xms16m -Xmx1G --module-path="lib:tvbrowser.jar" -Djava.library.path="${PROGRAM_DIR}" -splash:img>
# ensure disk cache is writte to drive
sync
echo "TV-Browser TERMINATED."
vielleicht? Vor das --module... oder so?

Gruß, Michael

Re: autom. Daten-Update, autom. Beenden?

Verfasst: 04 Jun 2022, 23:45
von halgrunt
ds10 hat geschrieben: 04 Jun 2022, 18:40 Ich habe NetControl etwas geändert, so dass beim Senden von kf_alt+f4 der Fenstermanager kein Problem mehr darstellt und TV-Browser auf jeden Fall beendet wird, wenn der Befehl empfangen wurde.
Boah, klasse! Das ist mir bedeutend lieber, als kill und Konsorten. Das (Plugin) schaue ich mir doch sehr gerne mal an.

Gruß, Michael

Edit: Und ja, ausprobiert und funktionuckelt! Sehr, sehr schön!

Re: autom. Daten-Update, autom. Beenden?

Verfasst: 04 Jun 2022, 23:53
von ds10
Das DISPLAY=:10.0 muss ganz an den Anfang der Befehlszeile, also DISPLAY=:10.0 ${JAVA_PROGRAM_DIR}java usw.

Re: autom. Daten-Update, autom. Beenden?

Verfasst: 05 Jun 2022, 00:05
von halgrunt
ds10 hat geschrieben: 04 Jun 2022, 23:53 Das DISPLAY=:10.0 muss ganz an den Anfang der Befehlszeile, also DISPLAY=:10.0 ${JAVA_PROGRAM_DIR}java usw.
Hmmm...

Code: Alles auswählen

DISPLAY=:10.0 java -Xms16m -Xmx1G --module-path=lib:tvbrowser.jar -Djava.library.path="/usr/share/tvbrowser" -splash:imgs/splash.png -Dpropertiesfile=linux.properties -m tvbrowser/tvbrowser.TVBrowser ''
[ . . . ]
Exception in thread "main" java.awt.AWTError: Can't connect to X11 window server using ':10.0' as the value of the DISPLAY variable.
Geht das jetzt nur noch in der "cron" Variante, aber nicht mehr "normal"? Mit dem Icon vom Desktop oder aus einem Terminal mittels "tvbrowser" startet es auf alle Fälle nicht mehr. Mit dem Icon sehe ich noch kurz den splash.

Gruß, Michael

Re: autom. Daten-Update, autom. Beenden?

Verfasst: 05 Jun 2022, 00:14
von ds10
Ist vielleicht schon ein bisschen spät, du musst genau hinsehen, die Zeile muss mit DISPLAY=:10.0 ${JAVA_PROGRAM_DIR}java beginnen, um erst einmal sicher zu stellen, dass das gefundene Java auch genutzt wird und nicht irgend eine andere Version. Möglicherweise ist die DISPLAY-Nummer auch nicht korrekt, versuche es zuerst mit dem Standardwert DISPLAY=:0. TV-Browser muss ganz normal starten, egal von wo aus du den aufrufst. Wenn du nur einen Monitor verwendest, erscheint mir :10.0 als Wert auch eher merkwürdig.

Re: autom. Daten-Update, autom. Beenden?

Verfasst: 05 Jun 2022, 09:23
von halgrunt
ds10 hat geschrieben: 05 Jun 2022, 00:14Wenn du nur einen Monitor verwendest, erscheint mir :10.0 als Wert auch eher merkwürdig.
Ne, 2 Monitore sind schon dran. Ich hab das jetzt erstmal wieder rausgenommen und ein "echo $DISPLAY" vor dem eigentlichen Start von java eingefügt:

Code: Alles auswählen

miriki@lxdeb1130:~$ tvbrowser
Starting TV-Browser...
Java exec found in PATH. Verifying...
Suitable java version found [java = 11.0.15 2022-04-19]
Configuring environment...
Loading TV-Browser:
:10.0
java -Xms16m -Xmx1G --module-path=lib:tvbrowser.jar -Djava.library.path="/usr/share/tvbrowser" -splash:imgs/splash.png -Dpropertiesfile=linux.properties -m tvbrowser/tvbrowser.TVBrowser ''
command line options:
    -minimized      The main window will be minimized after start up
    -nostartscreen  No start screen during start up
    -fullscreen     Start in fullscreen-mode
    -ignorejvm      Don't check for Sun Java
    -safemode       Don't load Plugins

09:10:17 INFORMATION: Using settings from file /home/miriki/.config/tvbrowser/4.2.6/settings.prop
java.net.SocketException: Socket closed
        at java.base/java.net.PlainDatagramSocketImpl.receive0(Native Method)
        at java.base/java.net.AbstractPlainDatagramSocketImpl.receive(AbstractPlainDatagramSocketImpl.java:200)
        at java.base/java.net.DatagramSocket.receive(DatagramSocket.java:814)
        at tvbnetcontrol.TvbNetControl$2.run(TvbNetControl.java:143)
TV-Browser TERMINATED.
Man sieht also hier auch wieder die :10.0 ausgegeben. Und des NetControl hat TVB auch sauber mit

Code: Alles auswählen

echo -n "kf_alt+f4" >/dev/udp/localhost/27062
aus einem 2. Term beendet.

Jetzt hab ich's mit ebendiesem :10.0 wieder rein genommen:

Code: Alles auswählen

echo $DISPLAY
echo "DISPLAY=:10.0 ${JAVA_PROGRAM_DIR}java -Xms16m -Xmx1G --module-path="lib:tvbrowser.jar" -Djava.library.path=\"${PROGRAM_DIR}\" -splash:imgs/splash.png -Dpropertiesfile=linux.properties -m tvbrowser/tvbrowser.TVBrowser '$@'"
DISPLAY=:10.0 ${JAVA_PROGRAM_DIR}java -Xms16m -Xmx1G --module-path="lib:tvbrowser.jar" -Djava.library.path="${PROGRAM_DIR}" -splash:imgs/splash.png -Dpropertiesfile=linux.properties -m tvbrowser/tvbrowser.TVBrowser "$@"
... und jetzt geht's!

Gruß, Michael

Re: autom. Daten-Update, autom. Beenden?

Verfasst: 08 Jun 2022, 08:51
von halgrunt
halgrunt hat geschrieben: 05 Jun 2022, 09:23 ... und jetzt geht's!
Letztendlich wohl leider... zu früh gefreut.

Es scheint, dass ich auch mit der DISPLAY-Angabe das Ding nicht per cron gestartet kriege, auch wenn die ganze Zeit ein Benutzer im KDE angemeldet ist:

Code: Alles auswählen

Starting TV-Browser...
[ . . . ]
Exception in thread "main" java.awt.AWTError: Can't connect to X11 window server using ':10.0' as the value of the DISPLAY variable.
        at java.desktop/sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
        [ . . . ]
        at tvbrowser/tvbrowser.TVBrowser.<clinit>(TVBrowser.java:269)
TV-Browser TERMINATED.
Wie gesagt: "und jetzt geht's!" bezog sich auf das Script zum Start des TVB. Das konnte ich in einem Term aufrufen und bekam keine Fehler. Aber der cron-Job will leider nicht und ich hab auch noch nichts gefunden, daran was zu ändern. Also falls hier noch jemand eine Idee hat...

Gruß, Michael

Re: autom. Daten-Update, autom. Beenden?

Verfasst: 08 Jun 2022, 09:30
von ds10
Welches cron benutzt du denn? Das globale oder das nutzerspezifische?

Re: autom. Daten-Update, autom. Beenden?

Verfasst: 08 Jun 2022, 15:28
von halgrunt
ds10 hat geschrieben: 08 Jun 2022, 09:30 Das globale oder das nutzerspezifische?
Hmmm... Da sagst Du was... Musste ich erstmal gucken, weil das Log in /home/miriki liegt.

Ich hatte es mal in der root-crontab, ging nicht. Dann hatte ich es in der crontab von miriki. Das ist auch der User, der mit autologin an der Kiste ist. Da funktionierte aber auch irgendwas nicht, also hatte ich es wieder zurück in der root versucht. Die hat aber nach wie vor ein > und 2>&1 auf das home von miriki. Ich versuche es nochmal in der miriki-crontab.

Gruß, Michael