ubuntuusers.de

GUI-Anwendung alle 10 Tage automatisch starten

Status: Ungelöst | Ubuntu-Version: Ubuntu 20.04 (Focal Fossa)
Antworten |

UlfZibis

(Themenstarter)

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3440

Wohnort: Köln

So funktioniert es jetzt:

~/.config/systemd/user/signal-desktop.service :

[Unit]
Description=Start Signal Desktop GUI
Requires=default.target

[Service]
Type=forking
ExecStart=/usr/bin/gtk-launch signal-desktop

[Install]

~/.config/systemd/user/signal-desktop.timer :

[Unit]
Description=Timer for Signal Desktop GUI

[Timer]
OnCalendar=*-*-3/10 05:00:00
Persistent=true
Unit=signal-desktop.service

[Install]
WantedBy=default.target

systemctl --user enable signal-desktop.timer 
systemctl --user start signal-desktop.timer  # nur nötig, wenn der Timer sofort, also schon vor dem nächsten Ab-/Anmelden, loslegen soll. 

Signal Desktop wird so nun am 03., 13. und 23. jeden Monats um 05:00 Uhr gestartet, bzw. es wird später nachgeholt, sobald der Rechner wieder läuft. Genau alle 10 Tage lässt sich leider nicht einstellen, es sei denn, es fällt jemandem noch was anderes ein.

Tja, eigentlich ganz einfach und sehr elegant, wenn man erst einmal weis, wie es geht.

UlfZibis

(Themenstarter)

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3440

Wohnort: Köln

dingsbums schrieb:

und dafür auch noch komplizierte Skripte zu programmieren.

Kompliziert ist bei mir anders. Mehr als gebrauchsfertig vorbereiten geht leider nicht.

Ja wie Du siehst, lies sich nun doch eine elegante Methode mittels systemd finden. Weder ein Skript, noch ein Autostart-Eintrag sind nötig. Aber selbst wenn ich so ein Skript programmieren würde, dann würde ich den Zeitstempel-Klapperatismus durch einen einfachen Aufruf von anacron ersetzen, das könnte das Skript vermutlich um die Hälfte kürzer machen.

Aber vielen Dank für Deinen Einsatz und Deine Mühe, hätte ja notwendig werden können.

UlfZibis

(Themenstarter)

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3440

Wohnort: Köln

Und nun nochmal dazu:
UlfZibis schrieb:

Ich hab' jetzt auch mal die Cron-GUI installiert:

$ sudo apt install kdeadmin
[.....]

Leider lässt sich die nicht starten. Woran liegt das?

$ kde-config-cron
kde-config-cron: Befehl nicht gefunden.
ich@T500:~$ kdeadmin
kdeadmin: Befehl nicht gefunden.
ich@T500:~$ kde[Tab][Tab]
kded5                kde-geo-uri-handler

Hat jemand eine Idee, wie man diese grafische Cron-Job-Verwaltung denn aufruft?

UlfZibis

(Themenstarter)

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3440

Wohnort: Köln

seahawk1986 schrieb:

... kannst du das Szenario etwas genauer beschreiben, das erfordert, dass das Programm alle 10 Tage automatisch gestartet wird? Eventuell finden sich da ja noch bessere Ansatzpunkte.

Siehe den Hinweis hier.

Ich habe die nun gefundene Lösung dann mal hier verewigt.

UlfZibis

(Themenstarter)

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3440

Wohnort: Köln

UlfZibis schrieb:

Ich habe die nun gefundene Lösung dann mal hier verewigt.

Hallo,

Längere Zeit lief diese Lösung wunderbar bei mir. Aber seit ein paar Monaten vermisse ich den automatischen Start alle 10 Tage.

Woran kann das liegen?

(Mittlerweile bin ich auf Ubuntu 24.04, auch da lief es eine Zeit lang gut)

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 10349

Wohnort: Münster

UlfZibis schrieb:

[…] seit ein paar Monaten vermisse ich den automatischen Start alle 10 Tage.

Woran kann das liegen?

Dazu könnte man sich mit systemctl den aktuellen Status der Timer-Unit anschauen und mit journalctl deren Meldungen im Systemlog.

UlfZibis

(Themenstarter)

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3440

Wohnort: Köln

kB schrieb:

Dazu könnte man sich mit systemctl den aktuellen Status der Timer-Unit anschauen

Hatte ich schon, das sieht ziemlich normal aus:

$ systemctl --user status signal-desktop.timer 
● signal-desktop.timer - Timer for Signal Desktop GUI
     Loaded: loaded (/home/ich/.config/systemd/user/signal-desktop.timer; enabled; preset: enabled)
     Active: active (waiting) since Thu 2026-09-10 21:29:59 CEST; 1 week 6 days ago
    Trigger: Sat 2026-10-03 05:00:00 CEST; 1 week 1 day left
   Triggers: ● signal-desktop.service

Sep 10 21:29:59 W541 systemd[1523]: Started signal-desktop.timer - Timer for Signal Desktop GUI.

und mit journalctl deren Meldungen im Systemlog.

$ journalctl | grep "signal-desktop"
[..........]
Sep 12 01:37:34 W541 org.debian.apt[38914]: 01:37:34 AptDaemon.Worker [INFO]: Committing packages: dbus.Array([], signature=dbus.Signature('s')), dbus.Array([], signature=dbus.Signature('s')), dbus.Array([], signature=dbus.Signature('s')), dbus.Array([], signature=dbus.Signature('s')), dbus.Array([dbus.String('base-files'), dbus.String('language-pack-gnome-es'), dbus.String('language-pack-gnome-es-base'), dbus.String('libc-bin'), dbus.String('libc-dev-bin'), dbus.String('libc-devtools'), dbus.String('libc6'), dbus.String('libc6-dbg'), dbus.String('libc6-dev'), dbus.String('libc6-i386'), dbus.String('libc6:i386'), dbus.String('libpython3.12-dev'), dbus.String('libpython3.12-minimal'), dbus.String('libpython3.12-stdlib'), dbus.String('libpython3.12t64'), dbus.String('locales'), dbus.String('python-apt-common'), dbus.String('python3-apt'), dbus.String('python3.12'), dbus.String('python3.12-dev'), dbus.String('python3.12-minimal'), dbus.String('python3.12-venv'), dbus.String('signal-desktop'), dbus.String('wireless-regdb')], signature=dbus.Signature('s')), dbus.Array([], signature=dbus.Signature('s'))
Sep 12 01:39:33 W541 kernel: audit: type=1400 audit(1789169973.275:200): apparmor="STATUS" operation="profile_replace" info="same as current profile, skipping" profile="unconfined" name="signal-desktop" pid=40656 comm="apparmor_parser"
Sep 12 12:17:40 W541 signal-desktop.desktop[60196]: NODE_ENV production
Sep 12 12:17:40 W541 signal-desktop.desktop[60196]: NODE_CONFIG_DIR /opt/Signal/resources/app.asar/config
Sep 12 12:17:40 W541 signal-desktop.desktop[60196]: NODE_CONFIG {}
Sep 12 12:17:40 W541 signal-desktop.desktop[60196]: ALLOW_CONFIG_MUTATIONS undefined
Sep 12 12:17:40 W541 signal-desktop.desktop[60196]: HOSTNAME W541
Sep 12 12:17:40 W541 signal-desktop.desktop[60196]: NODE_APP_INSTANCE undefined
Sep 12 12:17:40 W541 signal-desktop.desktop[60196]: SUPPRESS_NO_CONFIG_WARNING undefined
Sep 12 12:17:40 W541 signal-desktop.desktop[60196]: SIGNAL_ENABLE_HTTP undefined
Sep 12 12:17:40 W541 signal-desktop.desktop[60196]: userData: /home/ich/.config/Signal
Sep 12 12:17:41 W541 signal-desktop.desktop[60196]: (node:60196) [DEP0180] DeprecationWarning: fs.Stats constructor is deprecated.
Sep 12 12:17:41 W541 signal-desktop.desktop[60196]: (Use `signal-desktop --trace-deprecation ...` to show where the warning was created)
Sep 12 12:17:41 W541 signal-desktop.desktop[60236]: MESA-INTEL: warning: Haswell Vulkan support is incomplete
Sep 12 12:17:42 W541 signal-desktop.desktop[60278]: (node:60278) [DEP0169] DeprecationWarning: `url.parse()` behavior is not standardized and prone to errors that have security implications. Use the WHATWG URL API instead. CVEs are not issued for `url.parse()` vulnerabilities.
Sep 12 12:17:42 W541 signal-desktop.desktop[60278]: (Use `exe --trace-deprecation ...` to show where the warning was created)
Sep 12 12:17:43 W541 signal-desktop.desktop[60278]: (node:60278) [node-fetch#buffer] DeprecationWarning: Please use 'response.arrayBuffer()' instead of 'response.buffer()'
Sep 13 09:54:18 W541 systemd[1523]: Starting signal-desktop.service - Start Signal Desktop GUI...
Sep 13 09:54:21 W541 systemd[1523]: signal-desktop.service: Control process exited, code=exited, status=1/FAILURE
Sep 13 09:54:21 W541 systemd[1523]: signal-desktop.service: Failed with result 'exit-code'.
Sep 13 09:54:21 W541 systemd[1523]: Failed to start signal-desktop.service - Start Signal Desktop GUI.
Sep 13 09:54:21 W541 systemd[1523]: signal-desktop.service: Consumed 5.702s CPU time.
Sep 23 09:06:41 W541 systemd[1523]: Starting signal-desktop.service - Start Signal Desktop GUI...
Sep 23 09:06:42 W541 systemd[1523]: signal-desktop.service: Control process exited, code=exited, status=1/FAILURE
Sep 23 09:06:42 W541 systemd[1523]: signal-desktop.service: Failed with result 'exit-code'.
Sep 23 09:06:42 W541 systemd[1523]: Failed to start signal-desktop.service - Start Signal Desktop GUI.
Sep 23 09:06:42 W541 systemd[1523]: signal-desktop.service: Consumed 3.446s CPU time.

Da gibt es tatsächlich was zu sehen. Hm, wie krieg' ich den Grund des Fehlers raus?

In der Service-Unit steht seit längerem:

[Unit]
Description=Start Signal Desktop GUI
Requires=default.target

[Service]
Type=forking
ExecStart=/usr/bin/signal-cli -a +49151515151 getUserStatus; /usr/bin/gtk-launch signal-desktop

[Install]

Kann es sein, dass ; da nicht funktioniert? Im Terminal funktioniert das einwandfrei.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11309

Wohnort: München

Kann es sein, dass ; da nicht funktioniert? Im Terminal funktioniert das einwandfrei.

Ja, Systemd hat für ExecStart= bewusst keine Shell-Umgebung, wenn man nicht explizit eine startet - am besten mal die Manpage zur systemd.service lesen.

UlfZibis

(Themenstarter)

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3440

Wohnort: Köln

Danke für den Hinweis. Wie kann ich denn in Systemd 2 oder mehr Befehle verketten, wenn das mit ; nicht geht? Oder soll ich das ganze dann in bash "..." kapseln?
Mal so auf die Schnelle gefragt ...

trollsportverein

Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 6393

Schau mal dort:

Der Ubuntu Manual Page Server scheint sich heute "503" Urlaub genommen zu haben.

*.desktop Dateien sind keine Bash. Auch wenn man einiges darin trotzdem anstellen kann. Bei Systemd ist es aber so, dass sie wegen der Sicherheit Einschränkungen machen. Will man ja wohl auch nicht, dass ein Systemd Service etwas anstellt, was nicht sein soll. Oder, dass so ein Systemd Service gekaptert wird.

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 10349

Wohnort: Münster

UlfZibis schrieb:

[…]

$ journalctl | grep "signal-desktop"
[..........]

Da gibt es tatsächlich was zu sehen.

Ja. Die Unit "System Desktop GUI" wird gestartet und ebenso wohl das dort vereinbarte Programm, aber dieses beendet sich selbst nach 5 Sekunden mit einem Fehler. Dreimal.

Hm, wie krieg' ich den Grund des Fehlers raus?

Du musst das eigentliche Programm signal-desktop überreden, Fehlermeldungen auszugeben. Wie man das macht, verrät Dir vieleicht Deine gut polierte Glaskugel. Manchmal steht so etwas auch in der Dokumentation der Software.

[…] Kann es sein, dass ; da nicht funktioniert?

Möglich. Da es aber – wie Du schreibst – bereits funktioniert hat, ist das wohl weniger wahrscheinlich. Der Sicherheit halber kannst Du nur einen Befehl pro ExecStart= oder ExecStartPre= verwenden.

Im Terminal funktioniert das einwandfrei.

Systend hat eigene Vorstellungen, wie ein Startbefehl auszusehen hat.

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14788

UlfZibis schrieb:

In der Service-Unit steht seit längerem:

Versuch mal auch mit:

Type=simple
Environment=XAUTHORITY=/home/$USER/.Xauthority
Environment=DISPLAY=:0
RemainAfterExit=yes

in der [Service]-Section der usereigenen service-unit.

UlfZibis

(Themenstarter)

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3440

Wohnort: Köln

Erst mal vielen Dank an Euch alle für die zahlreichen Tipps.

kB schrieb:

[…] Kann es sein, dass ; da nicht funktioniert?

Möglich. Da es aber – wie Du schreibst – bereits funktioniert hat, ist das wohl weniger wahrscheinlich.

Mit früher meinte ich den Stand aus 9375668. Irgendwann hatte ich dann den 2. Befehl mittels ; noch davor gesetzt. Ob genau seitdem der automatische Start nicht mehr funktioniert hat, kann ich leider nicht mehr sagen. Es dauerte ja einige Wochen, bis mir das Ausbleiben des automatischen Starts auffiel. Da hatte ich dann schon vergessen, dass ich in der Unit was geändert hatte. Insofern sorry für das Missverständnis.
Damals bin ich wohl auch nicht darauf gekommen, dass ich die Unit ja auch manuell starten kann um sie zu testen, statt auf den Timer warten zu müssen.
Das habe ich jetzt mal nachgeholt. Und siehe da, es liegt tatsächlich an der ;-Syntax. Ohne den signal-cli-Befehl davor startet Signal-Desktop fehlerfrei.

Der Sicherheit halber kannst Du nur einen Befehl pro ExecStart= oder ExecStartPre= verwenden.

Ja das werde ich dann jetzt mal ausprobieren.

UlfZibis

(Themenstarter)

Anmeldungsdatum:
13. Juli 2011

Beiträge: 3440

Wohnort: Köln

Ich habe nun mal folgendes da rein gesetzt:

[Unit]
Description=Start Signal Desktop GUI
Requires=default.target

[Service]
Type=forking
ExecStartPre=/usr/bin/signal-cli -a +49151515151 getUserStatus
ExecStartPre=/usr/bin/gtk-launch jpilot
ExecStart=/usr/bin/gtk-launch signal-desktop
ExecStartPost=sleep 30
ExecStartPost=/usr/bin/gtk-launch vlc
ExecStartPost=/usr/bin/signal-cli -a +49151515151 receive

[Install]

Zuerst startet dann jpilot, dann signal-desktop und nach 30 Sek. tatsächlich auch vlc. Wenn ich statt dessen gnome-sudoku einsetze, kriege ich:

$ systemctl --user start signal-desktop.service 
Job for signal-desktop.service failed because the control process exited with error code.
See "systemctl --user status signal-desktop.service" and "journalctl --user -xeu signal-desktop.service" for details.

Im Journal steht dann:

$ journalctl -r
Sep 24 20:00:49 W541 systemd[1523]: signal-desktop.service: Consumed 5.318s CPU time.
Sep 24 20:00:49 W541 systemd[1523]: Failed to start signal-desktop.service - Start Signal Desktop GUI.
Sep 24 20:00:49 W541 systemd[1523]: signal-desktop.service: Failed with result 'exit-code'.
Sep 24 20:00:49 W541 systemd[1523]: signal-desktop.service: Control process exited, code=exited, status=2/INVALIDARGUMENT
Sep 24 20:00:49 W541 gtk-launch[2379182]: gtk-launch: keine solche Anwendung gnome-sudoku
Sep 24 20:00:46 W541 systemd[1523]: Starting signal-desktop.service - Start Signal Desktop GUI...
Sep 24 20:00:43 W541 systemd[1523]: Reloading finished in 242 ms.
Sep 24 20:00:43 W541 systemd-xdg-autostart-generator[2379056]: /home/ich/.config/autostart/z-DisplayCAL-apply-profiles.desktop: not generating unit, executable speci>
Sep 24 20:00:43 W541 systemd-xdg-autostart-generator[2379056]: Exec binary 'DisplayCAL-apply-profiles' does not exist: No such file or directory
Sep 24 20:00:43 W541 systemd-xdg-autostart-generator[2379056]: /home/ich/.config/autostart/indicator-multiload.desktop: not generating unit, executable specified in >
Sep 24 20:00:43 W541 systemd-xdg-autostart-generator[2379056]: Exec binary 'indicator-multiload' does not exist: No such file or directory
Sep 24 20:00:43 W541 systemd-xdg-autostart-generator[2379056]: /etc/xdg/autostart/fcitx-qimpanel-autostart.desktop: not generating unit, executable specified in Exec>
Sep 24 20:00:43 W541 systemd-xdg-autostart-generator[2379056]: Exec binary '/usr/share/fcitx-qimpanel/fcitx-qimpanel-autostart' does not exist: No such file or direc>
Sep 24 20:00:43 W541 systemd-xdg-autostart-generator[2379056]: Configuration file /etc/xdg/autostart/uwidgets-runner.desktop is marked executable. Please remove exec>
Sep 24 20:00:43 W541 systemd-xdg-autostart-generator[2379056]: Configuration file /home/ich/.config/autostart/org.telegram.desktop._18faa92ddda377ceaa5a576303af9e59.>
Sep 24 20:00:43 W541 systemd[1523]: Reloading...
Sep 24 20:00:43 W541 systemd[1523]: Reloading requested from client PID 2379052 ('systemctl') (unit vte-spawn-3a75fd32-3a2e-4bb0-9014-d5cbb0e2691c.scope)...

OK, das ist interessant, aber Sudoku soll hier nicht das wirkliche Thema sein.

Was ich aber gerne noch wissen würde, ob denn signal-cli korrekt läuft. Wenn ich

$ systemctl --user daemon-reload
$ systemctl --user start signal-desktop.service 

... ausführe, bekomme ich leider keine Ausgabe auf dem Terminal.

Wie kann ich erreichen, dass die Ausgaben von signal-cli bei manuellem Start mittels systemctl --user start ... auf dem Terminal erscheinen?
Im Journal erscheint da leider auch nichts, noch nicht mal der Aufruf von signal-cli.

Antworten |