• Café
  • Automatisiertes Paketupgrade

Hallo
Erstmal Danke für die ausführliche Beschreibung. Ja die "minus Minuten" Anzeige ist Unglücklich.
Der Test von Heute ist auch sonderbar, das Script läuft findet zwei Dateien macht aber nichts.
Bringt die Meldung aus dem Bild "Vor 7 min" danach wurde kopiert und Installiert, die Version war die gleiche wie vorhanden.

cp /etc/ureminder.config ~/.config/ureminder.config
trizen -S ureminder-git

Dann wurde ohne reboot nochmal gestartet es wird eine log Datei angelegt und am Ende die Meldung aus dem Bild "Vor 2 min" erzeugt.
Möglicherweise ist der Fehler in der Log Datei zu sehen.

sudo ureminder -ald 1

Ups wie bekomme ich die log.zip hier rein ?

  • tuxnix hat auf diesen Beitrag geantwortet.
    • Bearbeitet

    md_39118
    Zur Versionierung von ureminder:
    Ich hebe nicht immer die Revisionsnummer im AUR an, wenn ich nur eine kleine Änderung einspiele. Wenn du ein trizen -S ureminder tätigst dann bekommst du immer alles neu, so wie es bei Codeberg aktuell steht. Dort kannst du auch sehen, was sich wann und in welcher Datei genau geändert hat.
    Zum Timer:
    Jedes mal wenn du ureminder upgradest wird auch der timer neu gestartet. Jedes mal wenn du den PC hoch fährst auch. interessant wäre es zu schauen, ob der Rechenfehler weg ist, wenn der timer zum zweiten mal auslöst. Der timer steht aber auf 24hours und deshalb siehst du das wahrscheinlich nie. Stelle den timer mal auf z.B. 15min oder 1hours und schau was dann passiert.
    # nano /usr/lib/systemd/system/ureminder.timer Eintag ändern. Danach Strg+o, Enter, Strg+x.
    Und dann ein # systemctl reenable ureminder.timer und sichere dir die logs in eine andere Datei. (Die -l Option überschreibt jedes mal das alte log, damit hier keine riesengroße Datei entstehen kann.)

    Zum Posten der /var/log/ureminder.log:
    Öffne die Datei mit einem Editor z.B. kate. Markiere alles (STRG+A). Kopieren drücken (STRG+C).
    Und poste den Inhalt (Strg+V) hier im Forum. Vergiss nicht davor und hinter dem code eine Zeile mit diesen drei Zeichen ``` einzufügen damit es hier auch als 'code block' erscheint!

    Du kannst aber auch vorher mal selbst schauen woran es denn liegen könnte.
    Vielleicht findest du ja meinen Fehler. (Es ist alles nur +-* und \ Rechnung). 😉
    Ab der Zeile # Days, hours and minutes till next auto upgradewird gerechnet.
    Es wird immer in der Einheit Sekunden gerechnet.
    Die Variablen sind so benannt:

    • NOW - sind die Sekunden die seit der "Geburt von UNIX" vergangen sind also ab 1.1.1970
    • LPUU - wird der pacman.log entnommen und ist der Zeitpunkt vom 'Last Pacman upgrade` auch in UNIX Zeit.
    • LPU - Die Differenz aus den beiden
    • NPU - das 'Next Package Upgrade' - Also dann wann, von 'jetzt' ab gerechnet das nächste upgrade kommen darf, unter er Voraussetzung, dass das autoupgrade maximal nur einmal in 24Stunden sprich einmal in 86400 Sekunden, mal der Zahl, die man für das 'days Intervall' gesetzt hat, erwünscht ist.
      Ich denke, hier könnte der Fehler sein. Schau mal ob bei dir NPU negativ wird.

    Wenn der Fehler dort nicht ist, dann schauen wir den Rest später durch. Da geht es dann darum zu berechnen wann, je nach Einstellung, der Timer auslösen wird, um das gewünschte autoupgrade dann auch ausführen zu können.

    • Bearbeitet

    md_39118
    Version ureminder 0.9.1-1 ist online

    • Einige Anzeigen konkreter gestaltet, Singular-Plural unterschieden
    • Deutsche Übersetzung
    • user config file
    • Prüfen der Eingabewerte für Adv=, Days=

    Nur die "Zeitmaschiene" die bei dir ein Paketupgrade in der Vergangenheit vornehmen möchte, muss noch gestoppt werden. 😉

    Nach einem ureminder upgrade mit trizen -Syu ureminder sollte auch die config nocheinmal mit userrechten kopiert werden
    $ cp /etc/ureminder.config ~/.config/ureminder.config
    oder alternativ der Eintrag 'days=` zu 'Days=' in der ~/.config/ureminder.config abgeändert werden.

    Hallo
    Hier die Log Datei warum geht es nicht als zip ?
    Kann die Log Datei nicht mit dem Start Datum von ureminder geschrieben werden.
    Ich kann erst am Wochenende nochmal Testen.

    + getopts :abd:hlv option
    + case $option in
    + re='^[0-9]+$'
    + [[ 1 =~ ^[0-9]+$ ]]
    + '[' 1 -lt 1 ']'
    + days=1
    + getopts :abd:hlv option
    
    if [[ $adv == "true" ]] || [[ $Adv == "true" ]]; then do=1 && echo $"Display message: What's to do when upgrading - ON"; fi
    + [[ true == \t\r\u\e ]]
    + do=1
    + echo 'Display message: What'\''s to do when upgrading - ON'
    Display message: What's to do when upgrading - ON
    if [ $Days ]; then days=$Days; fi
    + '[' 7 ']'
    + days=7
    if [ $days -eq 1 ]; then echo $"Auto upgrade every day - ON"; fi
    + '[' 7 -eq 1 ']'
    if [ $days -gt 1 ]; then echo $"Auto upgrade every $days days - ON"; fi
    + '[' 7 -gt 1 ']'
    + echo 'Auto upgrade every 7 days - ON'
    Auto upgrade every 7 days - ON
    
    # error db.lck
    if [ $(pgrep pacman) ]; then
        send $"Error: Pacman is busy" "Is there another app upgrading your system?" -a ureminder -t 0 -u critical
        exit 1
    elif [ -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>" -a ureminder -t 0 -u critical
        exit 1
    fi
    ++ pgrep pacman
    + '[' ']'
    + '[' -f /var/lib/pacman/db.lck ']'
    
    # update mirrors
    reflector --age 5 --delay 0.25 --protocol https --latest 5 --save /etc/pacman.d/mirrorlist || Error="reflector --age 5 --delay 0.25 --protocol https --latest 5"
    + reflector --age 5 --delay 0.25 --protocol https --latest 5 --save /etc/pacman.d/mirrorlist
    
    # del PKGS from cache which are not installed anymore
    paccache -ruk0 || Error="paccache -ruk0"
    + paccache -ruk0
    ==> no candidate packages found for pruning
    
    # keep current package and last for downgrade purpose
    paccache -rk2 || Error="paccache -rk2"
    + paccache -rk2
    ==> no candidate packages found for pruning
    
    # list all installed packages
    pacman -Qqe > /var/pkg.lst || Error="pacman -Qqe"
    + pacman -Qqe
    
    # download new packages
    pacman -Syuw --noconfirm || Error="# pacman -Syuw"
    + pacman -Syuw --noconfirm
    :: Paketdatenbanken werden synchronisiert …
     endeavouros wird heruntergeladen …
     core wird heruntergeladen …
     extra wird heruntergeladen …
     multilib wird heruntergeladen …
    :: Vollständige Systemaktualisierung wird gestartet …
    Abhängigkeiten werden aufgelöst …
    
    Paket (2)                    Alte Version  Neue Version  Netto-Veränderung
    
    extra/abseil-cpp             20240722.0-1  20240722.1-1           0,00 MiB
    endeavouros/eos-bash-shared  25.1.8-1      25.1.9-1               0,00 MiB
    
    Gesamtgröße des Downloads:  0,00 MiB
    
    :: Download fortsetzen? [J/n] 
    Schlüsselbund wird geprüft …
    Paketintegrität wird geprüft …
    
    # check for PKGS upgrades available
    PKGS=($(pacman -Qu | awk '{print $1}')) || Error="pacman -Qu"
    + PKGS=($(pacman -Qu | awk '{print $1}'))
    ++ pacman -Qu
    ++ awk '{print $1}'
    
    Nr=0
    + Nr=0
    for PKG in ${PKGS[@]}; do
      Nr=$(($Nr+1))
      PK+=("$Nr.$PKG")
    done
    + for PKG in ${PKGS[@]}
    + Nr=1
    + PK+=("$Nr.$PKG")
    + for PKG in ${PKGS[@]}
    + Nr=2
    + PK+=("$Nr.$PKG")
    
    # KERNEL upgrade
    KERNEL=$(cat /proc/version | awk '{ print $4}'| sed -e 's/(//' -e 's/@.*//')
    ++ cat /proc/version
    ++ awk '{ print $4}'
    ++ sed -e 's/(//' -e 's/@.*//'
    + KERNEL=linux
    for i in ${PKGS[*]}; do
      if [[ $KERNEL == $i ]]; then
        RKERNEL=$i
      fi
    done
    + for i in ${PKGS[*]}
    + [[ linux == abseil-cpp ]]
    + for i in ${PKGS[*]}
    + [[ linux == eos-bash-shared ]]
    
    # GUI upgrade
    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
    + for j in ${GUIs[@]}
    ++ pgrep -fc awesome
    + '[' 0 -gt 0 ']'
    + for j in ${GUIs[@]}
    ++ pgrep -fc budgie-session
    + '[' 0 -gt 0 ']'
    + for j in ${GUIs[@]}
    ++ pgrep -fc cinnamon-desktop
    + '[' 0 -gt 0 ']'
    + for j in ${GUIs[@]}
    ++ pgrep -fc deepin-daemon
    + '[' 0 -gt 0 ']'
    + for j in ${GUIs[@]}
    ++ pgrep -fc gnome-shell
    + '[' 0 -gt 0 ']'
    + for j in ${GUIs[@]}
    ++ pgrep -fc hyprland
    + '[' 0 -gt 0 ']'
    + for j in ${GUIs[@]}
    ++ pgrep -fc i3
    + '[' 0 -gt 0 ']'
    + for j in ${GUIs[@]}
    ++ pgrep -fc lxsession
    + '[' 0 -gt 0 ']'
    + for j in ${GUIs[@]}
    ++ pgrep -fc lxqt-session
    + '[' 0 -gt 0 ']'
    + for j in ${GUIs[@]}
    ++ pgrep -fc mate-desktop
    + '[' 0 -gt 0 ']'
    + for j in ${GUIs[@]}
    ++ pgrep -fc plasma-desktop
    + '[' 0 -gt 0 ']'
    + for j in ${GUIs[@]}
    ++ pgrep -fc sway
    + '[' 0 -gt 0 ']'
    + for j in ${GUIs[@]}
    ++ pgrep -fc xfce4-session
    + '[' 0 -gt 0 ']'
    
    # Witch of in config file noted applicatins get's a package upgrade
    for m in ${PKGS[*]}; do
      for n in ${APPS[*]};do
        if [[ "$m" == "$n" ]]; then
          UAPPS+=($n)
        fi
      done
    done
    + for m in ${PKGS[*]}
    + for n in ${APPS[*]}
    + [[ abseil-cpp == \f\i\r\e\f\o\x ]]
    + for n in ${APPS[*]}
    + [[ abseil-cpp == \l\i\b\r\e\w\o\l\f ]]
    + for n in ${APPS[*]}
    + [[ abseil-cpp == \k\a\t\e ]]
    + for n in ${APPS[*]}
    + [[ abseil-cpp == \v\i\m ]]
    + for n in ${APPS[*]}
    + [[ abseil-cpp == \l\i\b\r\e\o\f\f\i\c\e\-\s\t\i\l\l ]]
    + for n in ${APPS[*]}
    + [[ abseil-cpp == \l\i\b\r\e\o\f\f\i\c\e\-\f\r\e\s\h ]]
    + for n in ${APPS[*]}
    + [[ abseil-cpp == \g\i\m\p ]]
    + for n in ${APPS[*]}
    + [[ abseil-cpp == \i\n\k\s\c\a\p\e ]]
    + for n in ${APPS[*]}
    + [[ abseil-cpp == \k\d\e\n\l\i\v\e ]]
    + for n in ${APPS[*]}
    + [[ abseil-cpp == \r\e\t\e\x\t ]]
    + for m in ${PKGS[*]}
    + for n in ${APPS[*]}
    + [[ eos-bash-shared == \f\i\r\e\f\o\x ]]
    + for n in ${APPS[*]}
    + [[ eos-bash-shared == \l\i\b\r\e\w\o\l\f ]]
    + for n in ${APPS[*]}
    + [[ eos-bash-shared == \k\a\t\e ]]
    + for n in ${APPS[*]}
    + [[ eos-bash-shared == \v\i\m ]]
    + for n in ${APPS[*]}
    + [[ eos-bash-shared == \l\i\b\r\e\o\f\f\i\c\e\-\s\t\i\l\l ]]
    + for n in ${APPS[*]}
    + [[ eos-bash-shared == \l\i\b\r\e\o\f\f\i\c\e\-\f\r\e\s\h ]]
    + for n in ${APPS[*]}
    + [[ eos-bash-shared == \g\i\m\p ]]
    + for n in ${APPS[*]}
    + [[ eos-bash-shared == \i\n\k\s\c\a\p\e ]]
    + for n in ${APPS[*]}
    + [[ eos-bash-shared == \k\d\e\n\l\i\v\e ]]
    + for n in ${APPS[*]}
    + [[ eos-bash-shared == \r\e\t\e\x\t ]]
    
    # Exchange libreoffice 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
    + [[ '' != '' ]]
    + [[ '' != '' ]]
    
    # Witch of U-Application is running
    for k in ${UAPPS[@]}; do
      if [ $(pgrep -fc $k) -eq "0" ]; then
        RUAPPS=("${UAPPS[@]/$k}")
      fi
    done
    
    # Exchange app-name with pkg-name
    #if [[ "${APPS[@]/libreoffice/}" != "${APPS[@]}" ]]; then
    #    APPS=("${APPS[@]/libreoffice}")
    #    APPS+=("libreoffice-fresh")
    #    APPS+=("libreoffice-still")
    #fi
    
    for m in ${PKGS[*]}; do
      for n in ${StopUpgd[*]};do
        if [[ "$m" == "$n" ]]; then
          UStopUpgd+=($n)
        fi
      done
    done
    + for m in ${PKGS[*]}
    + for n in ${StopUpgd[*]}
    + [[ abseil-cpp == \a\p\a\c\h\e ]]
    + for n in ${StopUpgd[*]}
    + [[ abseil-cpp == \p\h\p ]]
    + for n in ${StopUpgd[*]}
    + [[ abseil-cpp == \o\p\e\n\s\s\h ]]
    + for n in ${StopUpgd[*]}
    + [[ abseil-cpp == \g\n\o\m\e\-\s\h\e\l\l ]]
    + for m in ${PKGS[*]}
    + for n in ${StopUpgd[*]}
    + [[ eos-bash-shared == \a\p\a\c\h\e ]]
    + for n in ${StopUpgd[*]}
    + [[ eos-bash-shared == \p\h\p ]]
    + for n in ${StopUpgd[*]}
    + [[ eos-bash-shared == \o\p\e\n\s\s\h ]]
    + for n in ${StopUpgd[*]}
    + [[ eos-bash-shared == \g\n\o\m\e\-\s\h\e\l\l ]]
    
    # Days, hours and minutes till next auto upgrade
    NOW=$(date --date='now' +%s)
    ++ date --date=now +%s
    + NOW=1737899776
    LPUU=$(date -d $(awk '/upgraded/ { print $1 }' /var/log/pacman.log | tail -1 | sed -e 's/\[//' -e 's/\]//') +%s)
    +++ awk '/upgraded/ { print $1 }' /var/log/pacman.log
    +++ tail -1
    +++ sed -e 's/\[//' -e 's/\]//'
    ++ date -d 2025-01-25T18:13:19+0100 +%s
    + LPUU=1737825199
    LPU=$((NOW-LPUU))
    + LPU=74577
    NPU=$((days*86400-LPU))
    + NPU=530223
    TIMER=( $(journalctl -u ureminder.service -g Started -o short-unix | tail -2 | awk '{print substr($1, 1, length($1) -7)}') )
    + TIMER=($(journalctl -u ureminder.service -g Started -o short-unix | tail -2 | awk '{print substr($1, 1, length($1) -7)}'))
    ++ journalctl -u ureminder.service -g Started -o short-unix
    ++ tail -2
    ++ awk '{print substr($1, 1, length($1) -7)}'
    #if [ $((TIMER + NPU)) -gt $NOW ]; then TIMER=
    PERIOD=$((${TIMER[1]}-${TIMER[0]}))
    + PERIOD=-1737898907
    COUNT=$((NPU/PERIOD))
    + COUNT=0
    CREST=$((NPU%PERIOD))
    + CREST=530223
    NTU=$((COUNT*PERIOD))
    + NTU=0
    if [ $CREST -eq 0 ]; then
        NU=$NPU
    else
        NU=$(($NPU+PERIOD))
    fi
    + '[' 530223 -eq 0 ']'
    + NU=-1737368684
    DAYS=$((NU/86400))
    + DAYS=-20108
    DREST=$((NU%86400))
    + DREST=-37484
    HOURS=$((DREST/3600))
    + HOURS=-10
    HREST=$((DREST%3600))
    + HREST=-1484
    MINUTES=$((HREST/60))
    + MINUTES=-24
    
    # Messages
    if [ ${#PKGS[*]} -eq 1 ]; then
    PKMESS=$"One new package: ${PK[*]}"
    elif [ ${#PKGS[*]} -ge 2 ]; then
    PKMESS=$"${#PKGS[*]} new packages: ${PK[*]}"
    fi
    + '[' 2 -eq 1 ']'
    + '[' 2 -ge 2 ']'
    + PKMESS='2 neue Pakete: 1.abseil-cpp 2.eos-bash-shared'
    
    if [ ${#RUAPPS[@]} -ge 1 ]; then
      SAVE=$"Save ${RUAPPS[@]} documents!\n"
    fi
    + '[' 0 -ge 1 ']'
    
    SYU=$"Run '# pacman -Syu' on terminal!\n"
    + SYU='Führe ein '\''# pacman -Syu'\'' im Terminal aus!\n'
    
    if [ $NU -ge 86400 ];  then NextUg=$"Next auto upgrade in $DAYS days\n"
    elif [ $NU -ge 3600 ]; then NextUg=$"Next auto upgrade in $HOURS hours\n"
    else NextUg=$"Next auto upgrade in $MINUTES minutes\n"
    fi
    + '[' -1737368684 -ge 86400 ']'
    + '[' -1737368684 -ge 3600 ']'
    + NextUg='Auto-Upgrade in -24 Minuten\n'
    
    if [[ "$RKERNEL" != "" ]] && [[ $GUI != "" ]]; then
        MESS=$"GUI and kernel upgrade:"
        DO=$"Restart your system"
    elif [[ "$RKERNEL" != "" ]]; then
        MESS=$"$RKERNEL upgrade:"
        DO=$"Restart your system"
    elif [[ $GUI != "" ]]; then
        MESS=$"$GUI upgrade:"
        DO=$"Restart your usersesson!\n"
    elif [ ${#UAPPS[*]} -gt "0" ]; then
        MESS=$"Application upgrade:"
        DO=$"Restart ${UAPPS[*]}!\n"
    else
        MESS=$"Upgrade successfull:"
        DO=$"Nothing else to do!\n"
    fi
    + [[ '' != '' ]]
    + [[ '' != '' ]]
    + [[ '' != '' ]]
    + '[' 0 -gt 0 ']'
    + MESS='Upgrade durchgeführt:'
    + DO='Nothing else to do!\n'
    
    if [ ${#UStopUpgd[@]} -ge 1 ]; then
      days=""
      send $"New version ${UStopUpgd[@]} arrived" $"$SYU$PKMESS" -a ureminder -t 0 -u critical
      exit 1
    fi
    + '[' 0 -ge 1 ']'
    
    # Auto upgrade
    if [ $days ] && [ "$(((LPU)/days))" -ge "86400" ] && [ "${#PKGS[*]}" -gt "0" ]; then
      NID=$(send  $"Upgrade starts in 1 minute:" $"$SAVE" -a ureminder -t 0 -u normal -p)
      sleep 60
      NID=$(send $"Upgrading:" $"Keep system running!" -a ureminder -t 0 -u critical -r $NID -p)
      pacman -Syu --noconfirm || Error="# pacman -Syu"
      send "$MESS" "$DO" -a ureminder -t 0 -u normal
    
    elif [ "${#PKGS[*]}" -gt "0" ]; then
    
        if  [ $do ] && [ $days ]; then send "$PKMESS" "$SAVE$SYU$DO$NextUg" -a ureminder -t 0 -u normal
      elif [ $days ]; then send "$PKMESS" "$NextUg" -a ureminder -t 0 -u normal
      elif [ $do ]; then send "$PKMESS" "$SAVE$SYU$DO" -a ureminder -t 0 -u normal
      else send "$PKMESS" -a ureminder -t 0 -u normal
      fi
    
    fi
    + '[' 7 ']'
    + '[' 10653 -ge 86400 ']'
    + '[' 2 -gt 0 ']'
    + '[' 1 ']'
    + '[' 7 ']'
    + send '2 neue Pakete: 1.abseil-cpp 2.eos-bash-shared' 'Führe ein '\''# pacman -Syu'\'' im Terminal aus!\nNothing else to do!\nAuto-Upgrade in -24 Minuten\n' -a ureminder -t 0 -u normal
    ++ who -T
    ++ awk '/+/{print $1}'
    ++ head -1
    + TUSER=ralf
    ++ id -u ralf
    + sudo -u ralf DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus notify-send '2 neue Pakete: 1.abseil-cpp 2.eos-bash-shared' 'Führe ein '\''# pacman -Syu'\'' im Terminal aus!\nNothing else to do!\nAuto-Upgrade in -24 Minuten\n' -a ureminder -t 0 -u normal
    
    # error message
    if  [ "$Error" != "" ]; then
      send $"Error: $Error" $"To analyse run this command on terminal!" -a ureminder -t 0 -u critical
    fi
    + '[' '' '!=' '' ']'
    • tuxnix hat auf diesen Beitrag geantwortet.
      • Bearbeitet

      zip kann man hier im forum nicht lesen.

      Das Start Datum von ureminder ist da:
      NOW=1737899776 UNIX Zeit in Sekunden
      oder übersetzt
      Sonntag, der 26.01.2025 um 14:56:16
      Das letzte Upgrade wurde laut pacman.log
      am 2025-01-25T18:13:19+0100 gefahren.
      LPU=74577 also 20 Stunden und 43 Minuten zuvor.
      Als days= war 7 eingestellt.
      Das gewünschte Update soll frühestens in NPU=530223 sec. stattfinden.
      Also von NOW an gut 6 Tage später.
      Soweit ist alles o.k.

      Aber dann beim Timer wird es richtig lustig.
      Geb doch mal bitte fogendes in die Konsole ein:

      journalctl -u ureminder.service -g Started | tail -2

      und

      journalctl -u ureminder.service -g Started -n2 -r

      und poste bitte was dann ausgegeben wird.

      Hallo
      Hier die Abfragen.

      journalctl -u ureminder.service -g Started | tail -2
      -- Boot 3d78464c3baf4cffa898c53503d72919 --
      Jan 26 14:41:47 rk-7072 systemd[1]: Started ureminder.service.
      #
      journalctl -u ureminder.service -g Started -n2 -r
      Jan 26 14:41:47 rk-7072 systemd[1]: Started ureminder.service.
      -- Boot 661856d8798d4f7fab8f6c4938066624 --
      Jan 25 17:52:20 rk-7072 systemd[1]: Started ureminder.service.
      #
      journalctl --list-boots -n10
      IDX BOOT ID                          FIRST ENTRY                 LAST ENTRY
       -9 39bc580cc5bc42529bf26ac90f0bf78e Sun 2025-01-19 20:34:03 CET Sun 2025-01-19 20:56:26 CET
       -8 1bc8cb1175d64336b499f702f7ba8c1e Mon 2025-01-20 14:48:30 CET Mon 2025-01-20 15:05:26 CET
       -7 0363700ce24646f0996e1d3ce4d0f6ac Mon 2025-01-20 15:05:41 CET Mon 2025-01-20 15:11:02 CET
       -6 4dd4b532c8b543f09c4c1a3005150f88 Sat 2025-01-25 16:47:15 CET Sat 2025-01-25 16:52:35 CET
       -5 09b11cddfe4d4c858037a723e65ae03d Sat 2025-01-25 16:53:03 CET Sat 2025-01-25 17:22:33 CET
       -4 035fdbf3dc0b4ee1ab412971475eccdb Sat 2025-01-25 17:22:48 CET Sat 2025-01-25 17:39:44 CET
       -3 46793ca7af26424485fd039e33c36ff4 Sat 2025-01-25 17:39:59 CET Sat 2025-01-25 17:46:34 CET
       -2 661856d8798d4f7fab8f6c4938066624 Sat 2025-01-25 17:46:49 CET Sat 2025-01-25 18:19:46 CET
       -1 3d78464c3baf4cffa898c53503d72919 Sun 2025-01-26 14:36:45 CET Sun 2025-01-26 15:08:48 CET
        0 0f2dc414d3f94f73ab1e76ebe700f358 Mon 2025-01-27 20:30:45 CET Mon 2025-01-27 20:35:38 CET
      #
      • Bearbeitet

      Danke!
      Sehr interssant was Endevour mit dem journal macht.

      Bei mir sieht die Ausgabe so aus:

      [matthias@leno1 ~]$ journalctl -u ureminder.service -g Started | tail -2
      Jan 27 21:57:43 leno1 systemd[1]: Started ureminder.service.
      Jan 27 23:58:00 leno1 systemd[1]: Started ureminder.service.

      Im skript wird der Befehl erweitert damit man zwei Zahlen (Unix Sekunden) erhält mit denen man rechnen kann:

      [matthias@leno1 ~]$ journalctl -u ureminder.service -g Started -o short-unix | tail -2 | awk '{print substr($1, 1, length($1) -7)}'
      1738011463
      1738018680

      Aber Endevour mogelt noch eine Zeile mit rein "------boot ...". Gib mal spaßeshalber den letzten Befehl bei dir ein, und schau einmal was dann passiert. Wenn man dann die erste Zahl von der zweiten abzieht (um das Intervall zu erhalten mit der der Timer auslöst) kommt dann immer eine "minus Zeit" heraus. (Das Endevour-Zeitparadox und wir beide haben es entdeckt.😉 ).

      Die Lösung könnte dieser Befehl sein:
      journalctl -u ureminder.service -g Started -r -n2 |grep ureminder.service
      bzw. komplett dann so:

      [matthias@leno1 ~]$ journalctl -u ureminder.service -g Started -r -n2 -o short-unix | grep ureminder.service | awk '{print substr($1, 1, length($1) -7)}'
      1738025890
      1738018680

      (Doppelt Filtern filtert besser - morgen werde ich meinen Kaffee mit zwei Kaffeefiltern kochen 😉 )

      1738025890-1738018680=7210 (Sekunden) heißt - Der Timer wurde auf 2hours eingestellt - stimmt!.

      (Schau interessehalber mal oben in deinen log post PERIOD ist dort eine unmöglich große negative Zahl)

      Probier auch den letzten Befehl mal bei dir aus. Sicher ist sicher. Aber parallel spiel ich das schon mal bei ureminder ein, dann dürften bei dir auch die Zeitangaben für das nächste Upgrade endlich mal stimmen.
      (natürlich muss jetzt (durch den zusätzlichen Gebrauch der -r Option - das journal wird dann von unten gelesen - die zweite Zahl von der ersten subtrahiert werden)

      Was man hier sieht ist, dass Endevour eben nicht Arch Linux ist und dass diese "recht gut gemeinten Verbesserungen" am Ende die Sachen eher verkomplizieren als erleichtern.

      Die Ausgaben bei Endeavour sehen so aus, wie man es von systemd auch unter Arch Linux gewöhnt ist, jedenfalls wenn die Logs persistent abgelegt wurden. Mit der Option -b limitiert man die Log-Einträge auf den aktuellen Start.

      Mit einer vernünftigen Validierung der Daten (input) hätte man dieses Problem abfangen können.

      • tuxnix hat auf diesen Beitrag geantwortet.

        Hallo
        Es ist genau so nach jeden Pc Start oder reboot wird eine ---Boot Zeile erzeugt und das Script zeigt eine - Zeit an.
        Wenn das Script das zweiten mal startet ist alles OK
        Möglicherweise bin ich aber Schuld daran durch meine Timer Einstellung.

        [Timer]
        OnBootSec=5min
        OnUnitActiveSec=15min
        Persistent=true
        
        [Install]
        WantedBy=multi-user.target

        Ich bin mir nicht sicher ob nur Endeavour diese ---boot Zeile in das journal schreibt.
        Auf meinen Arch Pc sieht eine Abfrage so aus.

        journalctl -u shadow.service -g Started | tail -2
        -- Boot 039d1183c54d4093af81480cf2c7a245 --
        Jan 28 17:08:23 linux-pc6 systemd[1]: Started Verify integrity of password and group files.

        Mir ist noch etwas aufgefallen. In der .config/ureminder.config war Days=1 eingetragen. In der /etc/ureminder.config war Days=7 eingetragen.
        Im Log wird + days=7 angezeigt, nachdem auch in der /etc/ureminder.config war Days=1 eingetragen wurde wird das auch im Log angezeigt.

        Hier die Zusammenfassung von Heute

        journalctl -u ureminder.service -g Started -r -n2 -o short-unix | grep ureminder.service | awk '{print substr($1, 1, length($1) -7)}'
        1738010796
        1738009261
        #
        reboot
        systemctl list-timers
        NEXT                            LEFT LAST                         PASSED UNIT                             ACTIVATES
        Tue 2025-01-28 20:24:21 CET  3min 9s Mon 2025-01-27 21:46:36 CET       - ureminder.timer                  ureminder.service
        #
        ls -la /var/log/ureminder*
        -rw-r--r-- 1 root root 12830 28. Jan 20:24 /var/log/ureminder.log
        #
        systemctl list-timers
        NEXT                            LEFT LAST                          PASSED UNIT                             ACTIVATES
        Tue 2025-01-28 20:39:25 CET    14min Tue 2025-01-28 20:24:25 CET  50s ago ureminder.timer                  ureminder.service
        #
        sudo mv /var/log/ureminder.log /var/log/ureminder-t4.log
        #
        journalctl -u ureminder.service -g Started | tail -4
        Jan 27 21:21:01 rk-7072 systemd[1]: Started ureminder.service.
        Jan 27 21:46:36 rk-7072 systemd[1]: Started ureminder.service.
        -- Boot 97eaedf8c8e94e9583efd1f89a8c4061 --
        Jan 28 20:24:25 rk-7072 systemd[1]: Started ureminder.service.
        #
        journalctl -u ureminder.service -g Started | tail -4
        Jan 27 21:46:36 rk-7072 systemd[1]: Started ureminder.service.
        -- Boot 97eaedf8c8e94e9583efd1f89a8c4061 --
        Jan 28 20:24:25 rk-7072 systemd[1]: Started ureminder.service.
        Jan 28 20:39:35 rk-7072 systemd[1]: Started ureminder.service.
        #
        sudo mv /var/log/ureminder.log /var/log/ureminder-t5.log
        #
        journalctl -u ureminder.service -g Started | tail -5
        Jan 27 21:46:36 rk-7072 systemd[1]: Started ureminder.service.
        -- Boot 97eaedf8c8e94e9583efd1f89a8c4061 --
        Jan 28 20:24:25 rk-7072 systemd[1]: Started ureminder.service.
        Jan 28 20:39:35 rk-7072 systemd[1]: Started ureminder.service.
        Jan 28 20:54:38 rk-7072 systemd[1]: Started ureminder.service.
        #
        sudo mv /var/log/ureminder.log /var/log/ureminder-t6.log

        Bei Bedarf können die Log Dateien nachgereicht werden.

        • tuxnix hat auf diesen Beitrag geantwortet.
          • Bearbeitet

          Gerry_Ghetto Mit einer vernünftigen Validierung der Daten (input) hätte man dieses Problem abfangen können.

          Die liebe Vernunft!
          Ich lese doch nur das ein, was systemed "vernünftiger Weise" nötiert hat.
          Und ja, ich hätte erst einmal validieren müssen, ob meine Vorstellungen von Vernunft und die Vernunft derer die systemd machen, an dieser Stelle mit einander korrelieren.
          Aber die einzige Methode das herauszufinden ist try & error.
          Jedenfalls stellte ich mir vernünftiger Weise vor, dass wenn ich die Startzeiten eines service abfrage auch die Startzeiten des service erhalte und nicht noch ein: "Darf's ein bisschen mehr sein." (und die -g Option bei journalctl so dachte ich, käme von grep.) Und auf meinem Pc hat es bisher ja auch immer danach ausgesehen, als wäre es so. Aber ja, ich kann mich irren. Das tue ich sogar häufig und dann wird es halt wieder korrigiert.
          Und ja, du hast recht, jetzt nachdem ich endlich weiß wo der Haase im Pfeffer liegt, sehe ich, dass wenn ich ein journalctl -u ureminder.service -g Started -n1000 tätige auch mal ab und an eine einsame Zeile mit -- Boot 97eaedf8c8e94........- zwischendurch auftaucht. Und ja, auch Endevour ist hiermit entlastet.

          md_39118
          Möglicherweise bin ich aber Schuld daran durch meine Timer Einstellung.

          Nein, der Timer löst aus, mehr will man von ihm nicht.
          Und ja, bei mir schreibt er auch die -- Boot Zeile, Das ist mir aber bisher nie aufgefallen. Ich boote recht selten. Deshalb hab ich auch nie die "minus Minuten" gesehen.
          Endevours ist in dem Punkt auch wieder entlastet. (s. oben)

          md_39118 Mir ist noch etwas aufgefallen. In der .config/ureminder.config war Days=1 eingetragen. In der /etc/ureminder.config war Days=7 eingetragen.....

          Ist mir inzwischen auch aufgefallen. Das ist bei mir schon korrigiert, aber die Korrektur noch nicht ausgeliefert. Die user-config sollte dann immer die ausschlaggebende sein.

          Ich bin gerade dabei die Validierung der Eingaben in der user-config Datei zu erarbeiten.
          Ob es so bleibt oder noch modifiziert wird, weiß ich jetzt auch noch nicht, jedenfalls ist Stand der Dinge dass das script den Inhalt der Arrays in der ~/...config für GUIs, APPS und StopUpgd darauf hin überprüft, ob es sich dabei um installierte Pakete handelt und falls nicht, darüber informiert und irrelevante Angaben dann auch selbsttätig löscht.
          (Es ist recht ungewöhnlich es so zu handhaben, aber hätte den Vorteil, dass die ~/.....config nur Eingaben hat, die auch etwas bewirken und Typos ect. pp. ausgeschlossen sind.
          Ohnehin spricht das script lediglich Empfehlungen aus, falls ein Upgrade eines installierten Paketes ansteht. Alles was kein installierte Paket ist, hat deshalb auch in der ~/...config nichts zu suchen. Das Löschen jedenfalls ändert nichts am System, sondern sorgt lediglich für eine kurze Laufzeit des scripts. Und das script selbst macht eigentlich auch nicht viel, außer dem user nette Hinweise zu geben. )

          Werden die auto upgrade Zeiten bei dir jetzt richtig angezeigt?

          Dann könnten wir dann auch ein Häkchen dahinter machen.

          Version 0.9.2-1 mit den beschriebenen Änderungen folgt auf dem Fuße.

          Es gibt Dinge, die weiss man. Es gibt Dinge, die lernt man. Und es gibt Dinge, die meint man.

          Programmieren lernt man, indem man programmiert. Und dabei fliegt man oft auf die Schnauze, aber das ist auf längere Sicht etwas gutes, weil man idealerweise daraus lernt.

          Nimm dir die Kritik am Code nicht zu Herzen, denn es ist Kritik am Code und nicht an deiner Person.

            • Bearbeitet

            Gerry_Ghetto

            1. Ich nehme es mir immer zu Herzen wenn du etwas sagst.
            2. Dann grummele ich erst einmal.
            3. Dann schau ich nochmal richtig nach.
            4. Und dann merke ich, dass ich wieder etwas dazugelernt habe.

            Also recht vielen Dank für deine Kritik!
            ....und die aufmunterden Worte.

            Gerry_Ghetto Nimm dir die Kritik am Code nicht zu Herzen, denn es ist Kritik am Code und nicht an deiner Person.

            Code von anderen ist aus eigener Sicht immer Scheiße. Besonders jener des Vergangenheits-Ich.

            Hallo
            Werden die auto upgrade Zeiten bei dir jetzt richtig angezeigt?
            So wie ich das Bild von Gestern sehe "JA"

            • tuxnix hat auf diesen Beitrag geantwortet.
              • Bearbeitet

              md_39118

              Jein! Bei der unteren Meldung steht noch ein klitzekleines Minuszeichen vor der Eins. Zeitparadoxien sind wirklich überaus nachhaltig..... 😉 Ich habe da Filme gesehen 😱 ....
              Wenn du magst kannst du versuchen der Sache auf die Spur zu kommen.
              Die Option -l nutzen und falls sowas wieder vorkommt mit z.B kate die /var/log/uremiunder.log öffnen und schauen wo das Minuszeichen herkommt. Da ist nur der Abschnitt von NOW bis MINUTES interessant.
              Im Zweifelsfall kopieren und den Inhalt dann hier ins Forum beamen.😎
              War der untere screenshot nach einem Neustart?

              //edit

              Hallo
              Ja der untere screenshot ist nach dem Einschalten erstellt, der obere nachdem der Timer das Script 15 Min. später startet.

              • Bearbeitet

              Hmm mal weiter beobachten ob das nur nach dem booten auftaucht. Den service mit der -l Option ausstatten. Und dann abwarten und schaun. Minus 1 Minute ist eventuell auch dadurch möglich, wenn der systemd.timer mit dem Auslösen 1. Minute Verspätung hat. Das ist in der Toleranz. Man kann den auch auf accuracy einstellen, wenn man es ganz genau haben will. Aber so what, es geht ja nicht um's exakt wachsweich gekochte Frühstücksei 🥚.
              (Wenn im log. DAYS und HOURS (großgeschrieben) =0 sind, würde ich MINUTES=-1 tollerieren.)

              Hallo
              Hier nochmal zur letzten Abfrage von Gestern.
              Um 20:24:25 erfogte der 1. Start nach dem reboot in der *-t4.log steht dann "DAYS=-20116 DREST=-64877 HOURS=-18 MINUTES=-1"
              Um 20:39:35 erfogte der 2. Start durch (Timer 15min) die *-t5.log zeigt nun "DAYS=0 DREST=5011 HOURS=1 MINUTES=23"
              Um 20:54:38 erfogte der 3. Start durch (Timer 15min) die *-t6.log zeigt nun "DAYS=0 DREST=4101 HOURS=1 MINUTES=8"

              journalctl -u ureminder.service -g Started | tail -5
              Jan 27 21:46:36 rk-7072 systemd[1]: Started ureminder.service.
              -- Boot 97eaedf8c8e94e9583efd1f89a8c4061 --
              Jan 28 20:24:25 rk-7072 systemd[1]: Started ureminder.service.
              Jan 28 20:39:35 rk-7072 systemd[1]: Started ureminder.service.
              Jan 28 20:54:38 rk-7072 systemd[1]: Started ureminder.service.
              • tuxnix hat auf diesen Beitrag geantwortet.
                • Bearbeitet

                md_39118
                Gestern war gestern. (Ich hab da noch gleichzeitig Variablen umgestellt) Also vergessen wir das mal.

                DAYS=0 HOURS=1 MINUTES=23 sieht gut aus.
                DAYS=0 HOURS=1 MINUTES=8 ist auch gut.
                (Dein Timer ist auf 15min eingestellt 😉 )

                Falls wieder einmal -1 Minute erscheint, dann ist es wichtig auch DAYS= und HOURS= anzuschauen. Nur wenn dann auch dort negative Werte auftauchen, dann liegt was im Argen.

                5 Tage später

                Hallo
                Am 2.2.2025 habe ich mit trizen -S ureminder-git die Version "0.9.2-1" Installiert.
                Vorher wurde alles alte gelöscht. Im Timer habe ich wieder "OnBootSec=5min" eingetragen.
                In /etc/ureminder.config wurde Days=3 eingetragen.
                In .config/ureminder.config wurde Days=1 eingetragen.
                Nach einen reboot startet ureminder erkennt 55 neue Pakete und holt sie auch.
                Dann wurde es merkwürdig der Monitor wird mit Meldungen geflutet "Bild 1" nach wegklicken aller 55 Meldungen ist "Bild 2" zu sehen.
                Ein Upgrade erfolgte nicht.
                Die Log Datei ist 74KiB groß und wird angehängt.


                Ups das log ist wohl zu groß max. 65535 Zeichen.