#3 50-landscape-sysinfo

The landscape part already has a statement about "when it is from" as it
is not re-executed on high load. This is handy as it will also ensure
there is no confusion "from when" this info is if we skip for too
frequent invocations.

Since it has an alternate less useful output I've added checks to
replace this more often and not replace a good output with a bad one.

--- orig/50-landscape-sysinfo   2022-03-30 07:53:04.320551811 +0000
+++ /etc/update-motd.d/50-landscape-sysinfo     2022-03-30 10:04:00.536053398 
+0000
@@ -1,17 +1,39 @@
 #!/bin/sh
-# pam_motd does not carry the environment
-[ -f /etc/default/locale ] && . /etc/default/locale
-export LANG
-cores=$(grep -c ^processor /proc/cpuinfo 2>/dev/null)
-[ "$cores" -eq "0" ] && cores=1
-threshold="${cores:-1}.0"
-if [ $(echo "`cut -f1 -d ' ' /proc/loadavg` < $threshold" | bc) -eq 1 ]; then
-    echo
-    echo -n "  System information as of "
-    /bin/date
-    echo
-    /usr/bin/landscape-sysinfo
-else
-    echo
-    echo " System information disabled due to load higher than $threshold"
+
+# do try refresh this more than once per minute
+# Due to cpu consumption and login delays (LP: #1893716)
+stamp="/var/lib/landscape/landscape-sysinfo.cache"
+NEED_UPDATE="FALSE"
+find $stamp -newermt 'now-1 minutes' 2> /dev/null | grep -q -m 1 '.' || 
NEED_UPDATE="TRUE"
+# If the last report in cache wasn't useful (load was too high) still wait at 
least 5 seconds
+if grep -q "System information disabled" $stamp 2> /dev/null; then
+    find $stamp -newermt 'now-5 seconds' 2> /dev/null | grep -q -m 1 '.' || 
NEED_UPDATE="TRUE"
 fi
+
+if [ "$NEED_UPDATE" = "TRUE" ]; then
+    # pam_motd does not carry the environment
+    [ -f /etc/default/locale ] && . /etc/default/locale
+    export LANG
+    cores=$(grep -c ^processor /proc/cpuinfo 2>/dev/null)
+    [ "$cores" -eq "0" ] && cores=1
+    threshold="${cores:-1}.0"
+    if [ $(echo "`cut -f1 -d ' ' /proc/loadavg` < $threshold" | bc) -eq 1 ]; 
then
+       (
+            echo
+            echo -n "  System information as of "
+            /bin/date
+            echo
+            /usr/bin/landscape-sysinfo
+        ) > $stamp
+    else
+       # do not replace a formerly good result due to load
+       if ! grep -q "System information as of" $stamp 2> /dev/null; then
+               (
+                   echo
+                   echo " System information disabled due to load higher than 
$threshold"
+               ) > $stamp
+       fi
+    fi
+fi
+
+[ ! -r "$stamp" ] || cat "$stamp"

# Info:
It might be worth to note, the optimizations to 95-hwe-eol and 
91-release-upgrade save CPU cycles (which is good and worth on its own), but do 
not improve the delay much.
The optimization to 

P.S. I'll need some minor updates for style and avoiding errors (e.g.
the && exit 0 was working but could be bad)

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1893716

Title:
  scripts in /etc/update-motd.d/ run even on login via non-interactive
  scp and sftp sessions

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/landscape-client/+bug/1893716/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to