ubuntuusers.de

Cronjob Aufgaben

Status: Gelöst | Ubuntu-Version: Ubuntu 22.04 (Jammy Jellyfish)
Antworten |

maria66

Anmeldungsdatum:
19. Oktober 2023

Beiträge: Zähle...

Hallo, ich wollte das mir regelmäßig der gnome-calendar angezeigt wird. Zu bestimmten Tagen. Und zwar über einen cronjob. Und ich wollte fragen, was für einen Befehl ich eingeben sollte. Wenn ich nur den Pfad zum Kalender angebe, bringt das nichts. Auch einfache Anzeigen, einfache Texte, über notify bringen nichts. Könnte jemand vielleicht helfen. Und mir sagen, was man als Befehle nach den Zeitangaben reinschreiben sollte.

Ubuntu 18.04.6 und 22.04

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

also eigentlich sind weder systemd Timer Units noch Cron dafür gemacht, periodisch mit der GUI zu interagieren.

Wenn ich das richtig verstehe ist dein Ziel, ein GUI-Programm, hier den GNOME Kalender, periodisch (z.B. 1x pro Stunden) automagisch zu öffnen und in den Vordergrund des Desktops zu holen?

Gruß, noisefloor

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14388

maria66 schrieb:

Auch einfache Anzeigen, einfache Texte, über notify bringen nichts.

Was genau meinst Du mit "bringen nichts"? Funktioniert es evtl. nicht mit notify via cronjob? Wenn ja, dann poste mal, dein jetziges Konstrukt mit notify (das nicht funktioniert).

maria66

(Themenstarter)

Anmeldungsdatum:
19. Oktober 2023

Beiträge: 4

1. Ich dachte mit Display=1 könnte man auch mit der GUI interagieren. Das funtktioniert leider nicht so wie gedacht. Und genau das meinte ich mit dem Kalender. Die periodische Anzeige Oder vielleicht mit einem script, was von cron angesteuert wird.

über Terminal geht das mit dem Kalender. Ich gebe den Pfad an, und starte es mit sh zum testen . Das geht. Wenn ich aber den Pfad angebe, in dem crontab am ende dann geht das nicht. Achso, als lokaler Benutzer wollte noch sagen.

2. Einfache Anzeigen, wie, Es gibt noch eine Aufgabe zu erledigen.

Als Beispiel: Sat Oct 21 18:57:00 2023 Command:notify-send Timer ""Du hast einen Termin um 14 Uhr" Da passiert aber nichts. Es wird nichts angezeigt.

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14388

maria66 schrieb:

1. Ich dachte mit Display=1 könnte man auch mit der GUI interagieren. Das funtktioniert leider nicht so wie gedacht.

Wie ist die Ausgabe von:

echo $DISPLAY

?

maria66 schrieb:

2. Einfache Anzeigen, wie, Es gibt noch eine Aufgabe zu erledigen.

Als Beispiel: Sat Oct 21 18:57:00 2023 Command:notify-send Timer ""Du hast einen Termin um 14 Uhr" Da passiert aber nichts. Es wird nichts angezeigt.

Wie ist die Ausgabe von:

which notify-send

? Was passiert wenn Du:

notify-send 'Mitteilung:' 'Du hast einen Termin um 14 Uhr!' -u normal --icon=dialog-information

in der Kommandozeile benutzt?

maria66

(Themenstarter)

Anmeldungsdatum:
19. Oktober 2023

Beiträge: 4

Ich finde es nett, das sich jemand um mein Problem kümmert. Danke.

1. :1

2. /usr/bin/notify-send

3. Mitteilung Du hast einen Termin um 14 Uhr!

which sh = /bin/sh

4. So hatte ich mir das auch vorgestellt. Eine Anzeige die mich informiert. Zeitgesteuert. Entweder so oder über den Kalender.

5. über das Terminal funktioniert alles. Alle Anzeigen funktionieren. Auch das simple script.

6. Und über cron funktioniert das auch. Allerdings nur für den heutigen Tag.

Beispiel: mit script

7. Sun Oct 22 09:12:00 2023 a user Command: /bin/sh /home/user/ort/cron.sh

und ohne.

Beispiel:

8. notify-send -i /usr/share/icons/gnome/48x48/status/important.png "Dies ist ein sehr wichtiger Hinweis!" "Vergiss nicht zu lernen"

9. Nur wenn ich versuche, es periodisch anzulegen, für mehr als einen Tag, oder versuche das an einem bestimmten Tag zu wiederholen, dann funktioniert das nicht.

Beispiele:

10. 28 7 * * 7 /bin/sh /home/user/ort/cron.sh

11. 20 7 * * 2,7 /bin/sh /home/user/ort/cron.sh

12.Das script sieht so aus:

13. #!/bin/bash notify-send 'Mitteilung:' 'Du hast einen Termin um 14 Uhr!' -u normal --icon=dialog-information

14. Das funktioniert aber nicht, wenn ich es wie unter Punkt neun versuche anzulegen.

15. Deshalb meine Frage, wie ich das als cronjob anlege, das es mir automatisch zu festen Zeiten, die Termine anzeigt.

16. Mit dem gnome-calendar oder mit notify.

Danke

Marantkurz

Anmeldungsdatum:
7. September 2023

Beiträge: 941

setze mal in Deine cron.sh oben nach "#!/bin/bash"

exec 2>> $HOME/cron.log
echo "Aufruf: $(date)" >> $HOME/cron.log

Dann in die Datei schauen. Zeigt Fehler bei Aufruf.

notify-send sollte bspw. so funktionieren:(User ggf. anpassen)

XDG_RUNTIME_DIR=/run/user/1000 notify-send -t 0 -a "crontab" -i dialog-information "irgendwas"

zeige auch mal:

which gnome-calendar

Die Ausgaben bitte im Codeblock/ Rohtext. https://wiki.ubuntuusers.de/Forum/Kurzanleitung/codeblock.png/

Zum Testen bietet sich das Zenity Bsp. aller 5 Minuten an.

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14388

maria66 schrieb:

6. Und über cron funktioniert das auch. Allerdings nur für den heutigen Tag.

9. Nur wenn ich versuche, es periodisch anzulegen, für mehr als einen Tag, oder versuche das an einem bestimmten Tag zu wiederholen, dann funktioniert das nicht.

Beispiele:

10. 28 7 * * 7 /bin/sh /home/user/ort/cron.sh

11. 20 7 * * 2,7 /bin/sh /home/user/ort/cron.sh

Wenn es an einem Tag funktioniert, dann geht was auch für jeden Tag. Z. B. so:

20 7 * * *	/bin/sh /home/user/ort/cron.sh

d. h. jeden tag um 7 Uhr 20 Minuten wenn das Gerät eingeschaltet ist.
Du kannst z. B. im Script, temporär auch das Erstellen (mit touch) einer leeren Datei ins tmp-Verzeichnis, rein nehmen, ... als Beweis.
EDIT:

Siehe auch: https://crontab.guru/#20_7_*_*_*

Marantkurz

Anmeldungsdatum:
7. September 2023

Beiträge: 941

Mangels "gnome-calendar" habe ich mal was anderes genommen. Scheint zu funktionieren.

DISPLAY=:0 XDG_RUNTIME_DIR=/run/user/1000 /usr/bin/filezilla

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17625

Wohnort: Berlin

... wobei

1
28 7 * * 7      /bin/sh /home/user/ort/cron.sh

doppelt gemoppelt ist. Wenn /home/user/ort/cron.sh ausführbar markiert ist, und einen Shebang #!/bin/sh hat, man nicht noch ein /bin/sh davorsetzen muss.

Wenn man aber Spaß an überflüssigen Umwegen hat, dann kann man

1
28 7 * * 7      bin/sh -c '/bin/sh -c "/bin/sh /home/user/ort/cron.sh"'

in Erwägung ziehen.

punix40

Anmeldungsdatum:
23. Oktober 2023

Beiträge: Zähle...

Hallo, ich würde das mit at machen. So programmiere ich meine TV Sendungen. Hab mir da ein Skript mit Zenity und Dialog geschrieben.

Der Befehl geht so: Beispiel heute at 22:45 eingeben und enger drücken (at muss dazu installiert sein und der Dienst muss laufen) gewünschter Befehl eingeben. Z.b notify-send --icon=/home/$a_user/.icons/wg-stop.png "$wert Verbindung wurde getrennt."

möchte man an einem anderen Tag ein Programm öffnen oder ein Notify aufploppen lassen dann: at 16:20 2023-10-29 dann enter drücken. Befehl eingeben und mit strg+d beenden. Anschauen kann man sich dann die aufgaben mit atq

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17625

Wohnort: Berlin

Für einmalige Termine ist at eine gute Wahl, für regelmäßige eher cron.

maria66

(Themenstarter)

Anmeldungsdatum:
19. Oktober 2023

Beiträge: 4

Vielen Dank an alle. Besonders an lubux und Marantkurz. Es funktioniert wirklich alles so wie es sollte. Mit cron und sogar mit dem gnome-calendar. Auch mit dem Script und den Befehlen. Nur das mit dem Display sollte man anpassen. Display=:1 nicht 0. Sonst kam diese Fehlermeldung cannot open display: :0 Mit 1 wird der Kalender angezeigt.

Und eine gtk Warnung vom Kalender, wen man ihn aufruft. Das die Geolocation deaktiviert ist. Und danke für den Hinweis den User anzupassen, und den crontab guru

Ich habe beides at und cron. und da habe ich mich wohl falsch ausgedrückt. Mit einmal meinte ich at. Das habe ich wohl verwechselt. Punkte 7 und 10 vom 22.10.

Aber jetzt funktioniert alles tadellos.

Antworten |