Benachrichtigung auf dem Desktop über crontab

  • Hallo, da habe ich auch mal wieder eine Frage an die Linux-Kenner:

    In den crontabs meiner Rechner habe ich seit Jahren folgendes eingetragen:

    Code
    # m h  dom mon dow   command
    29 0 * * * /sbin/poweroff

    Dieser Eintrag steht in der crontab von root, damit die Rechner herunterfahren, wenn ich mal vergesse, das selbst zu tun. Funktioniert auch so weit.

    Nun kommt es ab und zu mal vor, dass ich dann noch am Rechner sitze und irgendwas mache, und die Kiste fährt ohne Vorwarnung zur programmierten Zeit herunter.

    Jetzt will ich 5 Minuten vorher noch eine Nachricht auf den Desktop werfen, dass gleich Feierabend ist, damit ich das Notfalls noch abbrechen kann.

    Die hier:

    Code
    # 54 13 * * * /usr/bin/xmessage "Der Rechner wird gleich abgeschaltet."
    # 57 13 * * * kdialog --msgbox "Danke, Sie haben eine einfache Dialogbox sehr glücklich gemacht"
    01 14 * * * /home/guido/Mitteilungen/t1.sh

    funktionieren nicht. Das sind meine Testeinträge, mit denen ich eben herumprobiert habe, daher die Uhrzeiten. Das letzte ist dann ein script, das auch kdialog startet. Vom Terminal aus gestartet funktionieren alle Varianten, nur als Eintrag in der crontab gehts nicht. Es muss auch die crontab von root sein, sonst funktioniert der shutdown nicht.

    Ich suche noch weiter, aber vielleicht hat ja jemand da schon die Lösung parat.

    And still, we will be here, standing like statues.

    Schinder und Knarren, statt Kinder und Narren...

    Alles ist so unsagbar schnell geworden.
    (EROC, Let's Gläntz)

    Vertrauen muss verdient werden. Man verschenkt es nicht.

    Ich stelle keine dummen Fragen. Du musst Dich mit Deinen Antworten schon ein bisschen anstrengen.

  • Geht bei dir notify-send?

    Test:

    Code
    notify-send "Was geht aaaab?"
    How can I send a custom desktop notification?
    I have a custom script and I want to send a desktop notification (the one that appears in the top right corner of the screen) with a custom message. How do I…
    askubuntu.com

    Work-PC: Debian 12 + Gnome | Surface Go2: Ubuntu 24.04 + Surface-Kernel | Server: Ubuntu Server 22.04 | Laptop: Linux Mint 21.2 |

    Raspberry Pi4s: PiOS Lite arm64 | Raspberry Pi5: Ubuntu 24.04 + Nvme M.2 | Steam Deck | Auf Linux seit 2003 | Python-Jünger|

    Mein Tool um das Desktop-Erlebnis auf dem Raspberry Pi zu verbessern: PiGro - Just Click It!

  • Ich hab keine Ahnung wie man das sinnvoll mir Crontab machen will. Cronjobs laufen in einer minimalen Umgebung da ist Interaktion mit Benachrichtigungen ziemlich kompliziert.

    Ich kann die aber sagen was mein Lösungansatz wäre (Achtung prüfe den Code das ist ungetestet)

    Als erstes würde ich ein Bash Script erstellen und z.b. unter "/home/usernsame/scripts/shutdown-warning.sh" speichern (du kannst es speichern wo du willst). Für den Gnome Desktop sieht das Script so aus:

    Code: shutdown-warning.sh
    # Script für Gnome und andere GTK desktops
    # Set the DISPLAY variable
    export DISPLAY=:0
    # Show the notification
    /usr/bin/zenity --question --text="Der Rechner wird in 5 Minuten heruntergefahren. Herunterfahren abbrechen?" --title="Herunterfahren Warnung"
    if [ $? -eq 0 ]; then
        # Wenn der Benutzer zustimmt, das Herunterfahren zu verhindern, deaktiviere den Herunterfahren-Timer
        systemctl stop shutdown.timer
    fi

    Für KDE würde ich das eher so schreiben:

    Wenn man Gnome verwendet sicherstellen das das Paket "zenity" installiert ist, wenn man KDE verwendet sicherstellen, das das Paket "kdialog" installiert ist. Bei einer Standard Gnome oder Standard KDE Installation sollten die Pakete aber vorhanden sein.

    Ab jetzt ist der Ablauf identisch (unabhängig vom Desktop).

    Nun erstellen wir ein paar systemd Services und Timer Scripte. Die Scripte jeweils unter /etc/systemd/system/ speichern

    Script 1: /etc/systemd/system/shutdown-warning.service

    Code
    [Unit]
    Description=Warnung vor dem Herunterfahren
    
    [Service]
    Type=oneshot
    ExecStart=/home/deinbenutzername/scripts/shutdown-warning.sh

    Script 2: /etc/systemd/system/shutdown.service

    Code
    [Unit]
    Description=Herunterfahren des Rechners
    
    [Service]
    Type=oneshot
    ExecStart=/bin/systemctl poweroff

    Script 3: /etc/systemd/system/shutdown-warning.timer

    Das ist ein Timer Script, hier die Uhrzeit anpassen, wann die Benachrichtigung zum herunterfahren aufpoppen soll. In meinem Beispiel ist es auf 23:55 Uhr terminiert also 5 Minuten vor Mitternacht.

    Code
    [Unit]
    Description=Timer für die Herunterfahren-Warnung
    
    [Timer]
    OnCalendar=*-*-* 23:55:00
    AccuracySec=1min
    
    [Install]
    WantedBy=timers.target

    Script 4: /etc/systemd/system/shutdown.timer

    Auch hier ein Timer Script, das regelt wann genau der Rechner automatisch heruntergefahren werden soll. Ist hier in meinem Beispiel auf Mitternacht terminiert. Die Zeit kannst man anpassen.

    Code
    [Unit]
    Description=Timer für das automatische Herunterfahren
    
    [Timer]
    OnCalendar=*-*-* 24:00:00
    AccuracySec=1min
    
    [Install]
    WantedBy=timers.target

    Nun müssen wir unser 1. Script (das was bei Gnome und KDE unterschiedlich ist) noch ausführbar machen und dann unsere systemd Script aktivieren


    Wenn alles korrekt eingerichtet ist und ich keine Mist gebaut beim aus dem Gedächtnis tippen gebaut habe: Müsste nun 5 Minuten vor Mitternach eine Benachrichtigung aufploppen die sagt: "Der Rechner wird in 5 Minuten heruntergefahren. Herunterfahren abbrechen?"

    In der Benachrichtigung kann man nun "Ja" oder "Nein" anklicken. Wenn man "Ja" anklickt, wird der "shutdown.timer gestoppt und damit das herunterfahren verhindert. Wenn man Nein anklickt, wird 5 Minuten später der Rechner runterfahren.

    Ich hoffe das hilft weiter.

    --
    Ciao!

    Linux Nutzer seit über 20 Jahren. I ❤️ Freedom!

    Offizieller Proton-Botschafter aus der Schweiz 🇨🇭 😅

    Meine Haupt-Distribution ist Ubuntu.

    Mein Blog: https://rueegger.me

    Wer meinen sinnlosen Gedanken folgen möchte, kann dies gerne auf Mastodon tun: https://swiss.social/@srueegger

  • Geht bei dir notify-send?

    Test:

    Code
    notify-send "Was geht aaaab?"

    https://askubuntu.com/questions/1870…op-notification

    Ja, das funktioniert. Werde mal schauen, was hier am besten funktioniert.

    And still, we will be here, standing like statues.

    Schinder und Knarren, statt Kinder und Narren...

    Alles ist so unsagbar schnell geworden.
    (EROC, Let's Gläntz)

    Vertrauen muss verdient werden. Man verschenkt es nicht.

    Ich stelle keine dummen Fragen. Du musst Dich mit Deinen Antworten schon ein bisschen anstrengen.

  • Du könntest dir für die Erinnerung ein crontab als User einrichten mit dem du eingeloggt bist.

    Da muss man das für jeden User separat einrichten. Ich möchte halt, dass, egal wer wie eingeloggt ist, darüber informiert wird, dass der Rechner gleich heruntergefahren wird. Also auch wenn jemand per ssh oder vnc auf dem Rechner ist, und egal, welcher User.

    EAber mal langsam anfangen, habe jetzt ja einige Infos hier. Habe gerade die HDD in einem Notebook gegen eine SSD getauscht und die HDD rüberkopiert. Läuft bis jetzt genau wie vorher, nur schneller. Besonders das für Besonderheiten installierte Windows10 profitiert mit seinen millionen Schreibvorgängen davon. Ist eine Silicon Power 1TB, hat ca 56€ gekostet. Mal sehen, ob die was taugt.

    And still, we will be here, standing like statues.

    Schinder und Knarren, statt Kinder und Narren...

    Alles ist so unsagbar schnell geworden.
    (EROC, Let's Gläntz)

    Vertrauen muss verdient werden. Man verschenkt es nicht.

    Ich stelle keine dummen Fragen. Du musst Dich mit Deinen Antworten schon ein bisschen anstrengen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!