• Café
  • Automatisiertes Paketupgrade

@md_39118 Bitte achte auf die richtige Formatierung, ich war mal so frei und habs korrigiert. Das mit dem Code ist leider nicht ganz intuitiv, aber hier steht es noch mal ausführlich beschrieben:

https://wiki.archlinux.de/title/Foren-FAQs#Wie_bekommt_man_Code_richtig_formatiert_ins_Forum?

Beachte bitte, dass Endeavour OS nicht Arch Linux ist, und für Arch entwickelte Dinge nicht automatisch auch unter Endeavour OS laufen.

    Dirk
    Danke für die Änderung der Formatierung.
    Im Moment habe ich nur das Endeavour System zum Testen, wobei das doch recht nahe am Original ist.

    md_39118
    Du hast den Timer/Service als user laufen. Du benötigst ihn aber als root! Weil ich noch Änderungen bei der Namensgebung und den Dateipfaden gemacht habe, schreibe ich dir hier am Besten noch mal alles komplett auf:

    ( Es müsste auf den meisten GUIs auf Anhieb eine Nachricht auf den Bildschirm anzeigen. Ich hab es aber noch nicht überall getestet. Ist kein Paketupgrade vorhanden dann gibt es aber auch keine Meldung. )

    Der Timer ist jetzt auf vierstündige Erinnerungen eingestellt.

    Viel Spaß damit und melde mal zurück auf welcher GUI du es laufen hast.

    //Edit 18.8.2024 : Ich habe den vorläufigen Code an dieser Stelle gelöscht, weil das irritieren kann und zu Fehlern führt s.unten. Die Diskussion bleibt auch ohne den Code klar verständlich, weil die jeweiligen Argumente explizit den jeweiligen Syntax aufführen. Ganz unten steht jetzt das aktuelle Skript incl. Installationsanleitung.

    • md_39118 hat auf diesen Beitrag geantwortet.

      tuxnix
      Hallo
      Danke für Deine Mühe.
      Auf dem Pc läuft KDE Plasma 6
      Deine neue Version kann ich erst ab 10.8 Testen, bin ab morgen mit den Enkeln wandern.
      Danach werde ich berichten.

      10 Tage später

      Hallo
      Ein kurzer Status Bericht, für mich sieht es jetzt gut aus.
      Das Auto Update wird dann wohl am 15.8.24 starten.
      Hier noch eine Zusammenfassung der journalctl Daten.

      Start am 13.08.2024 um 14:13
      
      Die 1. Meldung, wenn diese nicht gelöscht wird, wird die Anzeige der Zeit(min) weiter aktualisiert zb. von "Vor 1 min" bis die Startzeit hier 14:13 angezeigt wird.
      notify-send
      6 upgrades, run: pacman -Syu
      
      systemctl list-timers
      NEXT                             LEFT LAST                           PASSED UNIT                             ACTIVA>
      Tue 2024-08-13 14:21:25 CEST       6s Tue 2024-08-13 14:11:36 CEST 9min ago ureminder.timer                  uremin>
      
      Die 2. Meldung, wenn diese nicht gelöscht wird, wird die Anzeige der Zeit(min) weiter aktualisiert zb. von "Vor 1 min" bis die Startzeit hier 14:21 angezeigt wird.
      notify-send
      6 upgrades, run: pacman -Syu
      
      Bis jetzt erfolgte noch kein Auto Update
      date
      Di 13. Aug 20:05:51 CEST 2024
      uname -a
      Linux rk-7072 6.10.3-arch1-2 #1 SMP PREEMPT_DYNAMIC Tue, 06 Aug 2024 07:21:19 +0000 x86_64 GNU/Linux
      
      
      journalctl | grep ureminder
      Aug 11 17:58:25 rk-7072 dolphin[1868]: kf.kio.workers.file: copy() QUrl("file:///run/media/ralf/D7DC-D7BD/neu/ureminder") to QUrl("file:///home/ralf/neu/ureminder") mode= 420
      Aug 11 17:58:25 rk-7072 dolphin[1868]: kf.kio.workers.file: copy() QUrl("file:///run/media/ralf/D7DC-D7BD/neu/ureminder.service") to QUrl("file:///home/ralf/neu/ureminder.service") mode= 420
      Aug 11 17:58:25 rk-7072 dolphin[1868]: kf.kio.workers.file: copy() QUrl("file:///run/media/ralf/D7DC-D7BD/neu/ureminder.timer") to QUrl("file:///home/ralf/neu/ureminder.timer") mode= 420
      Aug 11 17:58:25 rk-7072 dolphin[1868]: kf.kio.workers.file: copy() QUrl("file:///run/media/ralf/D7DC-D7BD/neu/ureminder.txt") to QUrl("file:///home/ralf/neu/ureminder.txt") mode= 420
      Aug 11 18:32:18 rk-7072 systemd[1]: Started ureminder.timer.
      Aug 11 18:32:18 rk-7072 systemd[1]: Started ureminder.service.
      Aug 11 18:32:19 rk-7072 ureminder[13020]: :: Paketdatenbanken werden synchronisiert …
      Aug 11 18:32:19 rk-7072 ureminder[13020]:  endeavouros wird heruntergeladen …
      Aug 11 18:32:19 rk-7072 ureminder[13020]:  core wird heruntergeladen …
      Aug 11 18:32:19 rk-7072 ureminder[13020]:  extra wird heruntergeladen …
      Aug 11 18:32:19 rk-7072 ureminder[13020]:  multilib wird heruntergeladen …
      Aug 11 18:32:19 rk-7072 ureminder[13020]: :: Vollständige Systemaktualisierung wird gestartet …
      Aug 11 18:32:19 rk-7072 ureminder[13020]:  Es gibt nichts zu tun
      Aug 11 18:32:20 rk-7072 ureminder[13028]: ==> no candidate packages found for pruning
      Aug 11 18:32:20 rk-7072 ureminder[13037]: ==> no candidate packages found for pruning
      Aug 11 18:32:20 rk-7072 systemd[1]: ureminder.service: Deactivated successfully.
      Aug 11 18:32:20 rk-7072 systemd[1]: ureminder.service: Consumed 1.305s CPU time, 40.5M memory peak.
      Aug 11 19:34:23 rk-7072 systemd[1]: ureminder.timer: Deactivated successfully.
      Aug 11 19:34:23 rk-7072 systemd[1]: Stopped ureminder.timer.
      Aug 11 19:34:54 rk-7072 systemd[1]: Started ureminder.timer.
      Aug 11 19:45:05 rk-7072 systemd[1]: Started ureminder.service.
      Aug 11 19:45:06 rk-7072 ureminder[1562]: :: Paketdatenbanken werden synchronisiert …
      Aug 11 19:46:06 rk-7072 ureminder[1562]:  endeavouros wird heruntergeladen …
      Aug 11 19:46:06 rk-7072 ureminder[1562]:  core wird heruntergeladen …
      Aug 11 19:46:06 rk-7072 ureminder[1562]:  extra wird heruntergeladen …
      Aug 11 19:46:06 rk-7072 ureminder[1562]:  multilib wird heruntergeladen …
      Aug 11 19:46:06 rk-7072 ureminder[1562]: :: Vollständige Systemaktualisierung wird gestartet …
      Aug 11 19:46:07 rk-7072 ureminder[1562]: Abhängigkeiten werden aufgelöst …
      Aug 11 19:46:23 rk-7072 ureminder[1562]: Paket (1)            Alte Version  Neue Version  Netto-Veränderung  Größe des Downloads
      Aug 11 19:46:23 rk-7072 ureminder[1562]: extra/python-orjson  3.10.6-1      3.10.7-1               0,00 MiB             0,26 MiB
      Aug 11 19:46:23 rk-7072 ureminder[1562]: Gesamtgröße des Downloads:  0,26 MiB
      Aug 11 19:46:23 rk-7072 ureminder[1562]: :: Download fortsetzen? [J/n]
      Aug 11 19:46:23 rk-7072 ureminder[1562]: :: Pakete werden empfangen …
      Aug 11 19:46:24 rk-7072 ureminder[1562]:  python-orjson-3.10.7-1-x86_64 wird heruntergeladen …
      Aug 11 19:46:24 rk-7072 ureminder[1562]: Schlüsselbund wird geprüft …
      Aug 11 19:46:25 rk-7072 ureminder[1562]: Paketintegrität wird geprüft …
      Aug 11 19:46:25 rk-7072 ureminder[1624]: ==> no candidate packages found for pruning
      Aug 11 19:46:25 rk-7072 ureminder[1634]: ==> no candidate packages found for pruning
      Aug 11 19:46:26 rk-7072 systemd[1]: ureminder.service: Deactivated successfully.
      Aug 11 19:46:26 rk-7072 systemd[1]: ureminder.service: Consumed 2.044s CPU time, 66.3M memory peak.
      Aug 11 20:53:24 rk-7072 systemd[1]: ureminder.timer: Deactivated successfully.
      Aug 11 20:53:24 rk-7072 systemd[1]: Stopped ureminder.timer.
      Aug 13 14:11:36 rk-7072 systemd[1]: Started ureminder.timer.
      Aug 13 14:11:47 rk-7072 systemd[1]: Started ureminder.service.
      Aug 13 14:11:49 rk-7072 ureminder[618]: :: Paketdatenbanken werden synchronisiert …
      Aug 13 14:11:51 rk-7072 ureminder[618]:  endeavouros wird heruntergeladen …
      Aug 13 14:11:51 rk-7072 ureminder[618]:  core wird heruntergeladen …
      Aug 13 14:11:51 rk-7072 ureminder[618]:  extra wird heruntergeladen …
      Aug 13 14:11:51 rk-7072 ureminder[618]:  multilib wird heruntergeladen …
      Aug 13 14:11:51 rk-7072 ureminder[618]: :: Vollständige Systemaktualisierung wird gestartet …
      Aug 13 14:11:52 rk-7072 ureminder[618]: Abhängigkeiten werden aufgelöst …
      Aug 13 14:12:20 rk-7072 ureminder[618]: Paket (6)            Alte Version    Neue Version    Netto-Veränderung  Größe des Downloads
      Aug 13 14:12:20 rk-7072 ureminder[618]: extra/libei          1.2.1-1         1.3.0-1                 -0,01 MiB             0,09 MiB
      Aug 13 14:12:20 rk-7072 ureminder[618]: core/linux           6.10.3.arch1-2  6.10.4.arch2-1           0,04 MiB           135,48 MiB
      Aug 13 14:12:20 rk-7072 ureminder[618]: core/linux-headers   6.10.3.arch1-2  6.10.4.arch2-1           0,00 MiB            25,92 MiB
      Aug 13 14:12:20 rk-7072 ureminder[618]: extra/mesa           1:24.1.5-1      1:24.1.5-2               0,00 MiB            17,70 MiB
      Aug 13 14:12:20 rk-7072 ureminder[618]: extra/polkit         124-2           125-1                   -0,01 MiB             0,39 MiB
      Aug 13 14:12:20 rk-7072 ureminder[618]: extra/python-orjson  3.10.6-1        3.10.7-1                 0,00 MiB
      Aug 13 14:12:20 rk-7072 ureminder[618]: Gesamtgröße des Downloads:  179,59 MiB
      Aug 13 14:12:20 rk-7072 ureminder[618]: :: Download fortsetzen? [J/n]
      Aug 13 14:12:20 rk-7072 ureminder[618]: :: Pakete werden empfangen …
      Aug 13 14:12:41 rk-7072 ureminder[618]:  linux-6.10.4.arch2-1-x86_64 wird heruntergeladen …
      Aug 13 14:12:41 rk-7072 ureminder[618]:  linux-headers-6.10.4.arch2-1-x86_64 wird heruntergeladen …
      Aug 13 14:12:41 rk-7072 ureminder[618]:  mesa-1:24.1.5-2-x86_64 wird heruntergeladen …
      Aug 13 14:12:41 rk-7072 ureminder[618]:  polkit-125-1-x86_64 wird heruntergeladen …
      Aug 13 14:12:41 rk-7072 ureminder[618]:  libei-1.3.0-1-x86_64 wird heruntergeladen …
      Aug 13 14:12:41 rk-7072 ureminder[618]: Schlüsselbund wird geprüft …
      Aug 13 14:12:43 rk-7072 ureminder[618]: Paketintegrität wird geprüft …
      Aug 13 14:13:00 rk-7072 ureminder[1278]: ==> no candidate packages found for pruning
      Aug 13 14:13:00 rk-7072 ureminder[1289]: ==> finished: 3 packages removed (disk space saved: 178.85 MiB)
      Aug 13 14:13:00 rk-7072 systemd[1]: ureminder.service: Deactivated successfully.
      Aug 13 14:13:00 rk-7072 systemd[1]: ureminder.service: Consumed 6.509s CPU time, 264.6M memory peak.
      Aug 13 14:21:39 rk-7072 systemd[1]: Started ureminder.service.
      Aug 13 14:21:39 rk-7072 ureminder[1468]: :: Paketdatenbanken werden synchronisiert …
      Aug 13 14:21:40 rk-7072 ureminder[1468]:  endeavouros wird heruntergeladen …
      Aug 13 14:21:40 rk-7072 ureminder[1468]:  core wird heruntergeladen …
      Aug 13 14:21:40 rk-7072 ureminder[1468]:  extra wird heruntergeladen …
      Aug 13 14:21:40 rk-7072 ureminder[1468]:  multilib wird heruntergeladen …
      Aug 13 14:21:40 rk-7072 ureminder[1468]: :: Vollständige Systemaktualisierung wird gestartet …
      Aug 13 14:21:40 rk-7072 ureminder[1468]: Abhängigkeiten werden aufgelöst …
      Aug 13 14:21:40 rk-7072 ureminder[1468]: Paket (6)            Alte Version    Neue Version    Netto-Veränderung
      Aug 13 14:21:40 rk-7072 ureminder[1468]: extra/libei          1.2.1-1         1.3.0-1                 -0,01 MiB
      Aug 13 14:21:40 rk-7072 ureminder[1468]: core/linux           6.10.3.arch1-2  6.10.4.arch2-1           0,04 MiB
      Aug 13 14:21:40 rk-7072 ureminder[1468]: core/linux-headers   6.10.3.arch1-2  6.10.4.arch2-1           0,00 MiB
      Aug 13 14:21:40 rk-7072 ureminder[1468]: extra/mesa           1:24.1.5-1      1:24.1.5-2               0,00 MiB
      Aug 13 14:21:40 rk-7072 ureminder[1468]: extra/polkit         124-2           125-1                   -0,01 MiB
      Aug 13 14:21:40 rk-7072 ureminder[1468]: extra/python-orjson  3.10.6-1        3.10.7-1                 0,00 MiB
      Aug 13 14:21:40 rk-7072 ureminder[1468]: Gesamtgröße des Downloads:  0,00 MiB
      Aug 13 14:21:40 rk-7072 ureminder[1468]: :: Download fortsetzen? [J/n]
      Aug 13 14:21:40 rk-7072 ureminder[1468]: Schlüsselbund wird geprüft …
      Aug 13 14:21:40 rk-7072 ureminder[1468]: Paketintegrität wird geprüft …
      Aug 13 14:21:41 rk-7072 ureminder[1555]: ==> no candidate packages found for pruning
      Aug 13 14:21:41 rk-7072 ureminder[1565]: ==> no candidate packages found for pruning
      Aug 13 14:21:41 rk-7072 systemd[1]: ureminder.service: Deactivated successfully.
      Aug 13 14:21:41 rk-7072 systemd[1]: ureminder.service: Consumed 2.598s CPU time, 48.8M memory peak.
      • tuxnix hat auf diesen Beitrag geantwortet.

        md_39118

        Ja, timer/service läuft und löst das skript aus!
        Ja, wenn Days=4 im Skript gesetzt ist und das letzte Paket von dir am 11.8 erneuert wurde und du zwischendurch kein pacman -Syu tätigst, dann sollte am 15.08. ein auto-ugrade erfolgen. 😉

        Erscheint denn auch alle 4 h eine Nachricht auf dem Desktop bzw. wenn du ein sudo ureminder ausführst? Dort werden auch die Namen der zum Upgrade stehenden Pakete angezeigt.
        Ich habe mal ein Screenshot gemacht wie das auf sway aussieht.
        Und welches Plasma läuft bei dir Plasma (X11) oder Plasma (Wayland) ?

        • md_39118 hat auf diesen Beitrag geantwortet.

          tuxnix
          Hallo
          Das Endeavour läuft mit Plasma (X11)
          Mit Wayland gibt es nach der User Anmeldung nur einen schwarzen Monitor keine Konsole nichts.
          Die 1 Nachricht kommt gleich nach dem Anmelden, die 2 Nachricht nach 7 Minuten.
          Beide Nachrichten zeigen die anstehenden Pakete. Nach 4 Stunden ist keine Nachricht erfolgt.
          Das werde ich nochmal Kontrollieren.
          Eigentlich wollte ich noch ein Bildschirm Foto anhängen, aber wie, ist ja sehr umständlich hier im Forum.

          • tuxnix hat auf diesen Beitrag geantwortet.

            md_39118

            Falls du Plasma mit Wayland ausprobieren möchtest wäre es für dich empfehlenswert das Gruppenpaket plasma noch einmal zu installieren. Da sind in letzter Zeit wohl noch ein paar Kleinigkeiten dazugekommen die man sonst nicht auf dem Rechner hat, wenn man nur aktualisiert. Das musst du aber nicht, wenn plasma X11 zu deiner Zufriedenheit läuft.

            Ich habe gestern selbst mal geschaut. Plasma zeigt Meldungen mit geringer Priorität nur sehr kurz an. Ich habe das Skript jetzt auf GNOME und Plasma angepasst, noch ein klein wenig erweitert und wenn die Tests gut verlaufen, dann gibt es am Wochenende eine verbesserte ureminder Version.

            Ein Bild anhängen ist hier recht einfach. Screenshot erzeugen, den Button mit der Landschaft drücken und das Bild hochladen. 😉

            • md_39118 hat auf diesen Beitrag geantwortet.

              tuxnix
              Hallo
              Die Meldungen 1 und 2 bleiben die ganze Zeit auf dem Desktop stehen, nach 4 Stunden kommt keine Meldung.
              X11 läuft recht gut, Plasma mit Wayland wird nochmal getestet.

              • tuxnix hat auf diesen Beitrag geantwortet.

                md_39118
                Das war auch so von mir gedacht, dass man die Paket-Meldung stehen bleibt bis man sie selbst wegklickt. 😉
                Der Timer sieht bei mir so aus:

                # systemctl list-timers
                NEXT                           LEFT   LAST                           PASSED         UNIT 
                Thu 2024-08-15 01:01:17 CEST   49min  Wed 2024-08-14 21:01:17 CEST   3h 10min ago   ureminder.timer

                Mit dem Befehl hast immer den Überblick.
                Oder den Befehl hier:

                # systemctl status ureminder.timer
                ● ureminder.timer
                     Loaded: loaded (/usr/lib/systemd/system/ureminder.timer; enabled; preset: disabled)
                     Active: active (waiting) since Wed 2024-08-14 06:56:25 CEST; 17h ago
                 Invocation: 82e3264d089248f0a3979f0d5f3b99ed
                    Trigger: Thu 2024-08-15 01:01:17 CEST; 47min left
                   Triggers: ● ureminder.service
                
                Aug 14 06:56:25 leno1 systemd[1]: Started ureminder.timer.

                Edit\:
                Bei der Abfrage von journalctl -b | grep ureminder hast du dann jeweils bevor das script ureminder ausgeführt wurde ein 'Started ureminder.service' und dahinter ein 'ureminder.service: Deactivated successfully' stehen.

                Damit du nach dem Hochfahren vom Rechner nicht zwei Meldungen auf's display bekommst, kannst du das persistans=true aus dem timer nehmen. Und vielleicht ihn auch gleich auf daily umstellen:

                #file->/usr/lib/systemd/system/ureminder.service
                
                [Unit]
                Description=ureminder.timer
                
                [Timer]
                OnStartupSec=5min
                OnUnitActiveSec=daily
                
                [Install]
                WantedBy=basic.target
                • md_39118 hat auf diesen Beitrag geantwortet.

                  tuxnix
                  Hallo
                  Das Auto Update ist heute noch nicht gelaufen, es wurden noch ca. 68 Pakete geladen.
                  Nach 4 Stunden kommt nichts mehr. Den Timer ändere ich mit der neuen Version von ureminder
                  Im Journal steht es genauso wie Du geschrieben hast.

                  Aug 15 13:53:32 rk-7072 ureminder[622]:  kded-6.5.0-1-x86_64 wird heruntergeladen …
                  Aug 15 13:53:32 rk-7072 ureminder[622]:  bubblewrap-0.10.0-1-x86_64 wird heruntergeladen …
                  Aug 15 13:53:32 rk-7072 ureminder[622]: Schlüsselbund wird geprüft …
                  Aug 15 13:53:35 rk-7072 ureminder[622]: Paketintegrität wird geprüft …
                  Aug 15 13:54:08 rk-7072 ureminder[1749]: ==> no candidate packages found for pruning
                  Aug 15 13:54:08 rk-7072 ureminder[1759]: ==> finished: 67 packages removed (disk space saved: 98.57 MiB)
                  Aug 15 13:54:08 rk-7072 systemd[1]: ureminder.service: Deactivated successfully.
                  Aug 15 13:54:08 rk-7072 systemd[1]: ureminder.service: Consumed 11.574s CPU time, 677.6M memory peak.
                  Aug 15 14:02:41 rk-7072 systemd[1]: Started ureminder.service.
                  
                  Aug 15 14:02:42 rk-7072 ureminder[1882]: Gesamtgröße des Downloads:  0,00 MiB
                  Aug 15 14:02:42 rk-7072 ureminder[1882]: :: Download fortsetzen? [J/n]
                  Aug 15 14:02:42 rk-7072 ureminder[1882]: Schlüsselbund wird geprüft …
                  Aug 15 14:02:42 rk-7072 ureminder[1882]: Paketintegrität wird geprüft …
                  Aug 15 14:02:46 rk-7072 ureminder[2443]: ==> no candidate packages found for pruning
                  Aug 15 14:02:46 rk-7072 ureminder[2453]: ==> no candidate packages found for pruning
                  Aug 15 14:02:46 rk-7072 systemd[1]: ureminder.service: Deactivated successfully.
                  Aug 15 14:02:46 rk-7072 systemd[1]: ureminder.service: Consumed 7.337s CPU time, 58.6M memory peak.

                  Das Bild dazu

                  Mach einfach mal ein sudo pacman -Syu ich hab momentan wenig Zeit. ich schau da in ein paar Tagen nochmal genauer rein, wenn die neue Version steht. 😉

                  Das upgrade wird zwar auch vom Timer ausgelößt, richtet sich aber nach dem Zeitpunt wann das letzten Paketupgrade vorgenommen wurde.
                  awk '/upgraded/ { print $1 }' /var/log/pacman.log | tail -1
                  Bei Days=4 exakt 3 Tage und 23 Stunden später bis die Automatik bei dir zuschlagen kann.

                  Dein Timer löst auf jeden Fall schon mal aus. Das ist o.K. Allerdings zweimal hintereinander ich nehme an, beim Rechnerstart, wenn er länger als 4 Stunden aus war. In dem Fall ist dann 10m nach systemd start und persistend doppelt gemoppelt. 😉

                  • md_39118 hat auf diesen Beitrag geantwortet.

                    tuxnix
                    Der Pc wird morgen wieder gestartet dann sollte die Zeitspanne ja passen.

                    Hallo
                    Das Update ist am Freitag korrekt durchgelaufen.
                    Im ureminder.timer ist der Eintrag OnUnitActiveSec=daily nicht OK, ob (days, day, d) muß ich noch Testen.

                    journalctl -b | grep ureminder
                    Aug 16 17:05:24 rk-7072 systemd[1]: /usr/lib/systemd/system/ureminder.timer:8: Failed to parse timer value, ignoring: daily
                    Aug 16 17:05:30 rk-7072 systemd[1]: Started ureminder.timer.
                    • tuxnix hat auf diesen Beitrag geantwortet.

                      md_39118
                      Sorry, habe in der Eile nicht richtig hingeguckt.
                      Es muss selbstvertändlich OnCalendar=daily lauten
                      Aber warte besser bis morgen damit, dann kommt alles neu und besser.

                      Hier die aktuelle Version:

                      Das ureminder Skript

                      • Den skript-code markieren und mit strg+c in die Zwischenablage kopieren.

                      • sudo nano /usr/local/bin/ureminder - aufrufen mit strg+v die Zwischenablage einfügen, mit Strg+o return speichern und mit strg+x schließen.

                      • chmod +x /usr/local/bin/ureminder - Das script ausführbar machen.

                      • pacman -Syu libnotify reflector pacman-contrib - abhängige Pakete installieren

                      • sudo /usr/local/bin/ureminder - testen ob das skript läuft und kein Fehler auswirft!

                        #!/bin/bash
                        #file-> /usr/local/bin/ureminder
                        
                        TEXTDOMAIN=ureminder
                        TEXTDOMAINDIR=/usr/share/locale
                        version="ureminder version 8.0"
                        
                        # (Default) Days between auto upgrades
                        days="7"
                        
                        # Send user a notify-send meeage from root
                        send() {
                        TUSER=$(who -T | awk '/+/{print $1}' | head -1)
                        sudo -u $TUSER DISPLAY=$DISPLAY DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u $TUSER)/bus notify-send "$@"
                        }
                        
                        # Display Help
                        Help() {
                        echo
                        echo $"Reminds to upgrade and does it if user does not"
                        echo
                        echo $"Usage: ureminder [-s|a|t|b|h|v|u|d]"
                        echo $"Options:"
                        echo $"s      Display message: Save your Documents & pacman -Syu"
                        echo $"a      Display message: After upgrade: Do.."
                        echo $"t      Display message: Auto upgrade in x h y m (only with [u|d])"
                        echo $"b      Debug mode"
                        echo $"h      Print this help"
                        echo $"v      Print version"
                        echo $"u      Auto upgrade ON. (Or set option d)"
                        echo $"d num  Days between upgrades (default: d 7)"
                        echo
                        echo $"Example: ureminder -tasd 14"
                        echo
                        }
                        
                        # Get options
                        while getopts ":abd:hstuv" option; do
                           case $option in
                              a) # after Upgrade:messages
                                 afterdo=1
                                 echo $"Display message: After upgrade: Do.. - ON";;
                              b) # debug mode
                                 set -vx
                                 echo $"Debug mode activated";;
                              d) # Enter days
                                 re='^[0-9]+$'
                                 if ! [[ $OPTARG =~ $re ]]; then
                                    echo $"Error: $OPTARG is not a number!" >&2; exit 1
                                 elif [ $OPTARG -lt 1 ]; then
                                    echo $"d needs a positiv number as argument!"; exit 1
                                 else
                                    days=$OPTARG
                                    upgrade=1
                                    echo $"Auto upgrade - days=$days - ON"
                                 fi;;
                              h) # Display Help
                                 Help
                                 exit 0;;
                              s) # save documents and pacman -Syu messages
                                 savesyu=1
                                 echo $"Display message: Save your Documents & pacman -Syu - ON";;
                              t) # Message till auto upgrade
                                 time=1
                                 echo $"Display message: Next upgrade in x hours - ON";;
                              u) # Auto Upgrade
                                 upgrade=1
                                 echo $"Auto upgrade - days=$days - ON";;
                              v) # Display Version
                                 echo $version
                                 exit 0;;
                              ?) # Invalid option
                                 echo $"Usage: ureminder [-s|a|t|b|h|v|u|d argument]"
                                 echo $"Display help: ureminder -h"
                                 exit 1;;
                           esac
                        done
                        
                        # error db.lck
                        if [ -f /var/lib/pacman/db.lck ] && [ ! $(pgrep pacman) ]; then
                            send $"Error: Pacman database locked" "<a href='https://wiki.archlinux.org/title/Pacman#%22Failed_to_init_transaction_(unable_to_lock_database)%22_error'>How to solve the problem</a>" -t 0 -u critical
                            exit 1
                        fi
                        
                        # update mirrors
                        reflector --age 1 --delay 0.25 --protocol https --latest 5 --save /etc/pacman.d/mirrorlist || Error="reflector --age 1 --delay 0.25 --protocol https --latest 5"
                        
                        # del PKGS from cache which are not installed anymore
                        paccache -ruk0 || Error="paccache -ruk0"
                        
                        # keep current package and last for downgrade purpose
                        paccache -rk2 || Error="paccache -rk2"
                        
                        # list all installed packages
                        pacman -Qqe > /var/pkg.lst || Error="pacman -Qqe"
                        
                        # download new packages
                        pacman -Syuw --noconfirm || Error="# pacman -Syuw"
                        
                        # check for PKGS upgrades available
                        PKGS=($(pacman -Qu | awk '{print $1}')) || Error="pacman -Qu"
                        
                        Nr=0
                        for PKG in ${PKGS[@]}; do
                          Nr=$(($Nr+1))
                          PK+=("$Nr.$PKG")
                        done
                        
                        # KERNEL upgrade
                        KERNEL=$(cat /proc/version | awk '{ print $4}'| sed -e 's/(//' -e 's/@.*//')
                        for i in ${PKGS[*]}; do
                          if [[ $KERNEL == $i ]]; then
                            RKERNEL=$i
                          fi
                        done
                        
                        # GUI upgrade
                        GUIs=('awesome' 'budgie-session' 'cinnamon-desktop' 'deepin-daemon' 'gnome-shell' 'i3' 'lxsession' 'lxqt-session' 'mate-desktop' 'plasma-desktop' 'sway' 'xfce4-session')
                        for j in ${GUIs[@]}; do
                          if [ $(pgrep -fc $j) -gt "0" ]; then
                            for l in ${PKGS[@]}; do
                              if [[ $l == $j ]]; then
                                GUI=$j
                              fi
                            done
                          fi
                        done
                        
                        # wich of these often used applications is runnig now
                        APPS=('firefox' 'librewolf' 'chromium' 'dolphin' 'nautilus' 'kmail' 'kontact' 'kate' 'vim' 'libreoffice' 'gimp' 'inkscape' 'kdenlive')
                        for k in ${APPS[@]}; do
                          if [ $(pgrep -fc $k) -eq "0" ]; then
                            APPS=("${APPS[@]/$k}")
                          fi
                        done
                        
                        # Exchange app-name with pkg-name
                        if [[ "${APPS[@]/libreoffice/}" != "${APPS[@]}" ]]; then
                            APPS=("${APPS[@]/libreoffice}")
                            APPS+=("libreoffice-fresh")
                            APPS+=("libreoffice-still")
                        fi
                        
                        # wich of these runnig applicatins get's upgrades
                        for m in ${PKGS[*]}; do
                          for n in ${APPS[*]};do
                            if [[ "$m" == "$n" ]]; then
                              UAPPS+=($n)
                            fi
                          done
                        done
                        
                        # Exchange pkg-name with app-name
                        if [[ "${UAPPS[@]/libreoffice-still/}" != "${UAPPS[@]}" ]]; then
                            UAPPS=("${UAPPS[@]/libreoffice-still}")
                            UAPPS+=("libreoffice")
                        elif [[ "${UAPPS[@]/libreoffice-fresh/}" != "${UAPPS[@]}" ]]; then
                            UAPPS=("${UAPPS[@]/libreoffice-fresh}")
                            UAPPS+=("libreoffice")
                        fi
                        
                        #messages
                        SAVE=$"Save open documents!\n"
                        SYU=$"Run # pacman -Syu on terminal!\n"
                        AFTER=$"After upgrading:\n"
                        UPGRADE=$"Auto upgrade in $HOURS h $MINUTES m\n"
                        PKMESS=$"${#PKGS[*]} package(s): ${PK[*]}"
                        if [[ $GUI != "" ]] && [[ "$RKERNEL" != "" ]]; then
                            MESS=$"GUI and kernel upgrade:"
                            DO=$"Reboot your system!"
                        elif [[ $GUI != "" ]]; then
                            MESS=$"$GUI upgrade:"
                            DO=$"Restart your usersesson!\n"
                        elif [[ $RKERNEL != "" ]] && [ ${#UAPPS[*]} -gt "0" ]; then
                            MESS=$"Application and kernel upgrade:"
                            DO=$"Restart ${UAPPS[*]} and other applikations you are working with! New $RKERNEL version will run after your next system boot.\n"
                        elif [[ $RKERNEL != "" ]]; then
                            MESS=$"Kernel upgrade:"
                            DO=$"New $RKERNEL version will run after your next system boot.\n"
                        elif [ ${#UAPPS[*]} -gt "0" ]; then
                            MESS=$"Application upgrade:"
                            DO=$"Restart${UAPPS[*]} and other applikations!\n"
                        else
                            MESS=$"Upgrade successfull:"
                            DO=$"Restart applikations in use!\n"
                        fi
                        
                        # time till auto upgrade (Unix seconds)
                        NOW=$(date --date='now' +%s)
                        UPAC=$(date -d $(awk '/upgraded/ { print $1 }' /var/log/pacman.log | tail -1 | sed -e 's/\[//' -e 's/\]//') +%s)
                        NTIMER=$(date -d $(systemctl list-timers ureminder.timer | awk 'NR>1 && NR<3{print $2,$3}' | sed -e 's/ /T/') +%s)
                        LTIMER=$(date -d $(systemctl list-timers ureminder.timer | awk 'NR>1 && NR<3{print $7,$8}' | sed -e 's/ /T/') +%s)
                        NEXT=$((days*86400+UPAC-NOW))
                        PERIOD=$((NTIMER-LTIMER))
                        COUNTS=$((NEXT/PERIOD))
                        HOURS=$(( (NOW-LTIMER+PERIOD*COUNTS) / 3600))
                        REST=$(( (NOW-LTIMER+PERIOD*COUNTS) % 3600))
                        MINUTES=$(( (3600-REST) / 60))
                        #if [[ "$LTIMER x" == " x" ]]; then HOURS=$((NEXT/3600)); MINUTES=30; fi
                        echo $"Next upgrade in $HOURS h $MINUTES m"
                        
                        # Abitity to auto upgrade all 86400sec-600sec=85600sec=23 hous and 50 minutes
                        if [ "$(((NOW-UPAC)/days))" -ge "85600" ] && [ "${#PKGS[*]}" -gt "0" ] && [ $upgrade ]; then
                          NID=$(send  $"Upgrade starts in 1 minute:" $"$SAVE" -t 0 -u normal -p)
                          sleep 60
                          NID=$(send $"Upgrading:" $"Keep system running!" -t 0  -u critical -r $NID -p)
                          pacman -Su --noconfirm || Error="# pacman -Su"
                          send "$MESS" "$DO" -t 0 -u normal -r $NID
                        
                        elif [ "${#PKGS[*]}" -gt "0" ]; then
                          if [ $savesyu ] && [ $afterdo ] && [ $time ] && [ $upgrade ]
                            then  send "$PKMESS" "$SAVE$SYU$AFTER$DO$UPGRADE" -t 0 -u normal
                          elif [ $savesyu ] && [ $time ] && [ $upgrade ]; then  send "$PKMESS" "$SAVE$SYU$UPGRADE" -t 0 -u normal
                          elif [ $afterdo ] && [ $time ] && [ $upgrade ]; then  send "$PKMESS" "$AFTER$DO$UPGRADE" -t 0 -u normal
                          elif [ $savesyu ] && [ $afterdo ]; then  send "$PKMESS" "$SAVE$SYU$AFTER$DO" -t 0 -u normal
                          elif [ $savesyu ] && [ $afterdo ]; then  send "$PKMESS" "$SAVE$SYU$AFTER$DO" -t 0 -u normal
                        
                          elif [ $time ] && [ $upgrade ]; then  send "$PKMESS" "$UPGRADE" -t 0 -u normal
                          elif [ $savesyu ];then send "$PKMESS" "$SAVE$SYU" -t 0 -u normal
                          elif [ $afterdo ]; then  send "$PKMESS" "$AFTER$DO" -t 0 -u normal
                          else  send "$PKMESS" -t 0 -u normal
                          fi
                        fi
                        
                        # error message
                        if  [ "$Error" != "" ]; then
                          send $"Error: $Error" $"To analyse run this command on terminal!" -t 0 -u critical
                        fi
                        
                        # TODO:
                        # GUI- und APP-Messiges noch um weite Pakete ergänzen und weiter testen.
                        # Für APP - Messige Ablauf umdrehen. Zuerst pkgs upgrades testen spart eine Namenswandlung für libreoffice ein.
                        # Arch Linux News anzeigen.
                        # In Plasma und GNOME die Notiz Meldung größer darstellen lassen damit eine lange Paket-Upgrade-Liste komplett angezeigt wird.
                        
                        #Know issues:
                        # 'pacman -Qu' does not list new added dependencies of package upgrades. This is not very importent for ureminder script - Fix would need a feature request to pacman devs.

                      Der ureminder.service

                      • Den code markieren und mit strg+c in die Zwischenablage kopieren.
                      • sudo nano /usr/lib/systemd/system/ureminder.service - aufrufen mit strg+v die Zwischenablage einfügen, mit Strg+o return speichern und mit strg+x schließen.
                      
                      #file->/usr/lib/systemd/system/ureminder.service
                      
                      [Unit]
                      Description=ureminder.service
                      After=network-online.target
                      Wants=network-online.target
                      
                      [Service]
                      ExecStart=/usr/local/bin/ureminder -astu
                      
                      [Install]
                      WantedBy=basic.target

                      Der ureminder.timer

                      • Code markieren und mit strg+c in die Zwischenablage kopieren
                      • sudo nano /usr/lib/systemd/system/ureminder.timermit strg+v einfügen strg+o return speichern, strg+x schließen
                      • sudo systemctl enable --now ureminder.timer - anschließend den timer aktivieren
                      #file->/usr/lib/systemd/system/ureminder.timer
                      
                      [Unit]
                      Description=ureminder.timer
                      
                      [Timer]
                      OnCalendar=daily
                      Persistent=true
                      
                      [Install]
                      WantedBy=basic.target

                      7.8.2024 changelog:

                      • Erkennt den jeweils laufenden kernel und die laufende GUI und gibt nach einem upgrade vom kernel bzw. der GUI entsprechende Mitteilungen aus.

                      18.8.2024 changelog:

                      • Erkennt wenn eine laufende Anwendung ein upgrade erfahren hat und fordert auf sie neu zu starten. (Nur für sehr häufig genutzte Anwendungen)
                      • Option --days --verboste --help eingeführt (DAYS=7 default)
                      • Den Timer auf täglich eingestellt.
                      • Konsolenmeldung ab wann ein autoupgrade möglich ist.
                      • reflector auf internationalen Gebrauch eingestellt
                      • Funktion send überarbeitet
                      • Nummerrierung der verfügbaren upgrades damit eine eventuell abgeschnittene Meldung keine Vollständigkeit vortäucht. (Plasma zeigte bisher nur ca. 60 Pkgs namentlich an, obwohl das eine mal 82 upgrades anstanden.)

                      22.8.2024 changelog:

                      • Zeile 127 PRAPPS+=('$n')->PRAPPS+=($n)
                      • Zeile 138: $PRAPPS->${PRAPPS[*]}
                      • Skript für Übersetzungen eingerichtet und eine deutsche ureminder.mo erstellt.

                      27.8.2024 changelog:

                      • Skript-Code an meheren Stellen geändert und Rihenfolge umgestellt.
                      • Gibt schon bei der Upgade-Aufforderung Hinweise was danach zu tun ist.

                      29.8.2024 changelog:

                      • Bezieht die Timer Einstellung mit ein und zeigt jetzt präzise den Zeitpunkt des Auto-Upgrade an.
                      • Optionen neu gestaltet. Die verschiedenen Mitteilungen und das Autoupdate müssen jetzt explizit ausgewählt werden.

                      @md_39118 Viel Spaß damit. 😉

                      @GerBra
                      Das Autoupgrade lässt sich jetzt bequem per Option z.B. von
                      ureminder --days 30 für fast NIE bis --days 30000 NIEmals einstellen. 😉
                      Das käme wohl auch deiner Arbeitsweise entgegen, denn die fälligen Pkgs upgrades werden dir dann automatisch angezeigt.
                      Zusätzlich wäre es möglich Vorwarnungen einzubauen wenn upgrades anstehen, die bei dir sensibel sind.
                      Vielen Dank für das ausführliche Brainstorming, deine Argumente waren mir sehr hilfreich.

                        tuxnix
                        Hallo
                        Der erste Test bringt einen Fehler. Der Timer ist noch inaktiv
                        Kann der service und timer auch unter /etc/systemd/system/ liegen ?
                        Wird im Wiki als Ort für eigene Dateien angegeben.

                        sudo ureminder
                        ==> no candidate packages found for pruning
                        ==> no candidate packages found for pruning
                        :: Paketdatenbanken werden synchronisiert …
                         endeavouros ist aktuell
                         core ist aktuell
                         extra ist aktuell
                         multilib ist aktuell
                        :: Vollständige Systemaktualisierung wird gestartet …
                        Abhängigkeiten werden aufgelöst …
                        
                        Paket (11)                   Alte Version      Neue Version      Netto-Veränderung
                        
                        core/btrfs-progs             6.10-1            6.10.1-1                  -0,05 MiB
                        core/fakeroot                1.35.1-1          1.36-1                     0,00 MiB
                        extra/gtk-update-icon-cache  1:4.14.4-2        1:4.14.5-1                 0,00 MiB
                        extra/gtk4                   1:4.14.4-2        1:4.14.5-1                 0,21 MiB
                        extra/librsvg                2:2.58.2-1        2:2.58.3-1                -0,06 MiB
                        extra/libssh                 0.11.0-1          0.11.0-2                   0,00 MiB
                        extra/luajit                 2.1.1720049189-1  2.1.1723675123-1           0,01 MiB
                        core/systemd                 256.4-1           256.5-1                    0,01 MiB
                        core/systemd-libs            256.4-1           256.5-1                    0,00 MiB
                        core/systemd-resolvconf      256.4-1           256.5-1                    0,00 MiB
                        core/systemd-sysvcompat      256.4-1           256.5-1                    0,00 MiB
                        
                        Gesamtgröße des Downloads:  0,00 MiB
                        
                        :: Download fortsetzen? [J/n]
                        (11/11) Schlüssel im Schlüsselbund werden geprüft                                                                                             [---------------------------------------------------------------------------------------] 100%
                        (11/11) Paket-Integrität wird überprüft                                                                                                       [---------------------------------------------------------------------------------------] 100%
                        With Days=7. Next automated packgage upgrade when runnig uriminder in 113 hour(s)
                        Verbindung ist gescheitert: Datei oder Verzeichnis nicht gefunden
                        • tuxnix hat auf diesen Beitrag geantwortet.

                          md_39118
                          Man kann den timer und den service alternativ auch unter /etc/systemd/system/ abspeichern. Das macht funktionell keinen Unterschied. Für den Paketbau wird allerdings /usr/lib/systemd/system/ als Speicherort dafür vorgeschrieben. ureminder wird, falls es sich bewähren sollte als AUR Paket angeboten werden.
                          Ohnehin löst der timer, wenn du alles so wie ich es vorgegeben habe gemacht hast , zum aller ersten mal um 00:00:00 aus und holt das, falls der Rechner zu dem Zeitpunkt ausgeschaltet ist beim nächsten Start nach (persistend=true) .
                          Gutes Nächtle

                          md_39118

                          Der Fehler war im Skript bei der Funktion 'send' ich hab es oben korrigiert.

                          • md_39118 hat auf diesen Beitrag geantwortet.

                            tuxnix
                            Hallo
                            Mit der Änderung sieht es gut aus.
                            In der "ureminder-fg" habe ich die Meldungen auf DE eingetragen und die Rechte geändert.

                            sudo chmod go-x /usr/local/bin/ureminder-fg
                            ls -la /usr/local/bin/
                            -rwxr--r--  1 root root 7757 19. Aug 15:42 ureminder-fg
                            
                            journalctl -b | grep ureminder-fg
                            Aug 19 15:39:15 rk-7072 dolphin[1188]: kf.kio.workers.file: copy() QUrl("file:///run/media/ralf/D7DC-D7BD/version-3/ureminder-fg") to QUrl("file:///home/ralf/version-3/ureminder-fg") mode= 420
                            Aug 19 15:41:10 rk-7072 sudo[1328]:     ralf : TTY=pts/1 ; PWD=/home/ralf ; USER=root ; COMMAND=/usr/bin/nano /usr/local/bin/ureminder-fg
                            Aug 19 15:44:52 rk-7072 sudo[1402]:     ralf : TTY=pts/1 ; PWD=/home/ralf ; USER=root ; COMMAND=/usr/bin/chmod go-x /usr/local/bin/ureminder-fg
                            Aug 19 15:48:36 rk-7072 sudo[1449]:     ralf : TTY=pts/1 ; PWD=/home/ralf ; USER=root ; COMMAND=/usr/local/bin/ureminder-fg -h
                            Aug 19 15:49:38 rk-7072 sudo[1462]:     ralf : TTY=pts/1 ; PWD=/home/ralf ; USER=root ; COMMAND=/usr/local/bin/ureminder-fg
                            Aug 19 15:55:14 rk-7072 ureminder-fg[1838]: ==> no candidate packages found for pruning
                            Aug 19 15:55:15 rk-7072 ureminder-fg[1847]: ==> finished: 1 packages removed (disk space saved: 81.2 KiB)
                            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: :: Paketdatenbanken werden synchronisiert …
                            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]:  endeavouros wird heruntergeladen …
                            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]:  core wird heruntergeladen …
                            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]:  extra wird heruntergeladen …
                            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]:  multilib wird heruntergeladen …
                            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: :: Vollständige Systemaktualisierung wird gestartet …
                            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: Abhängigkeiten werden aufgelöst …
                            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: Paket (13)                   Alte Version      Neue Version      Netto-Veränderung
                            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: core/btrfs-progs             6.10-1            6.10.1-1                  -0,05 MiB
                            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: core/fakeroot                1.35.1-1          1.36-1                     0,00 MiB
                            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: extra/gtk-update-icon-cache  1:4.14.4-2        1:4.14.5-1                 0,00 MiB
                            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: extra/gtk4                   1:4.14.4-2        1:4.14.5-1                 0,21 MiB
                            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: extra/libinput               1.26.1-1          1.26.2-1                   0,00 MiB
                            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: extra/librsvg                2:2.58.2-1        2:2.58.3-1                -0,06 MiB
                            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: extra/libssh                 0.11.0-1          0.11.0-2                   0,00 MiB
                            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: extra/luajit                 2.1.1720049189-1  2.1.1723675123-1           0,01 MiB
                            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: extra/pv                     1.8.12-1          1.8.13-1                   0,00 MiB
                            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: core/systemd                 256.4-1           256.5-1                    0,01 MiB
                            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: core/systemd-libs            256.4-1           256.5-1                    0,00 MiB
                            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: core/systemd-resolvconf      256.4-1           256.5-1                    0,00 MiB
                            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: core/systemd-sysvcompat      256.4-1           256.5-1                    0,00 MiB
                            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: Gesamtgröße des Downloads:  0,00 MiB
                            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: :: Download fortsetzen? [J/n]
                            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: Schlüsselbund wird geprüft …
                            Aug 19 15:55:15 rk-7072 ureminder-fg[1866]: Paketintegrität wird geprüft …
                            Aug 19 15:55:16 rk-7072 ureminder-fg[1830]: With Days=7. Nächstes automatisches Package-Upgrade bei der Ausführung von ureminder in 95 hour(s)