diff --git a/check_reboot_required b/check_reboot_required index 423ea64938ec170d282bc5561f6b4df93abf098f..4b00ad7238e89f45aafdec10e1984a7b3bb79eed 100755 --- a/check_reboot_required +++ b/check_reboot_required @@ -5,23 +5,24 @@ # # ---------------------------------------------------------------------- # works for sure on -# - centos7,8 -# - debian6..10 -# - ubuntu10,12 +# - centos7+ +# - debian6+ +# - ubuntu10+ # ---------------------------------------------------------------------- # 2016-08-12 added ouput of packages # 2020-03-05 v1.2 <axel.hahn@iml.unibe.ch> switch to ph.* helper functions # 2022-10-14 v1.3 <axel.hahn@unibe.ch> fix debian output if /var/run/reboot-required.pkgs does not exist # Shellfixes; add help # 2023-03-29 v1.4 <martin.gasser@unibe.ch> add almalinux as distro -# 2024-03-7 v1.4 <martin.gasser@unibe.ch> add rocky as distro +# 2024-03-07 v1.4 <martin.gasser@unibe.ch> add rocky as distro +# 2025-02-11 v1.5 <axel.hahn@unibe.ch> add default banner for IML checks; add support for manjaro # ====================================================================== . $(dirname $0)/inc_pluginfunctions self_APPNAME=$( basename $0 | tr [:lower:] [:upper:] ) -self_APPVERSION=1.3 +self_APPVERSION=1.5 distro=$( ph.getOS ) @@ -31,21 +32,20 @@ distro=$( ph.getOS ) function showHelp(){ cat <<EOF -______________________________________________________________________ - -$self_APPNAME -v$self_APPVERSION - -(c) Institute for Medical Education - University of Bern -Licence: GNU GPL 3 -______________________________________________________________________ +$( ph.showImlHelpHeader ) Check if a reboot is required. -It works for Centos and Debian/ Ubuntu. +It works for Centos and Debian/ Ubuntu and Manjaro If the reboot is required: + * On Centos it shows the kernel number that will be installed, * On Debian/ Ubuntu it shows the packages that require the reboot, +* On Manjaro it shows if a newer kernel or which libs require the reboot. + The check for libs uses lsof. + +If your distro is based on Arch, Centos or Debian then it easily can be added +in the script if it does not work. Report the distro name to the author. SYNTAX: $(basename $0) @@ -99,8 +99,39 @@ case $distro in fi ;; + # + "manjaro") + kernel_current="$( uname -r | sed 's/-[a-z]*$//i' )" + kernel_installed="$( pacman -Q linux | cut -f 2 -d " " )" + + sReason="" + if [ "$kernel_current" != "$kernel_installed" ]; then + sReason+="Kernel $kernel_installed was installed ... " + fi + + libs="" + if which lsof > /dev/null; then + libs=$(lsof -n +c 0 2> /dev/null | grep 'DEL.*lib' | awk '1 { print $1 ": " $NF }' | sort -u) + if [[ -n $libs ]]; then + sReason+="Libs reqire a reboot ... " + fi + fi + + if [ -n "$sReason" ]; then + ph.setStatus "warning" + ph.status "[$distro] $sReason" + cat <<< $libs + else + ph.status "[$distro] No reboot required." + if ! which lsof > /dev/null; then + echo "Remark: Install lsof to search for libs that require a reboot." + fi + fi + ;; + *) ph.abort "UNKNOWN: distro [$distro] was detected but is not supported (yet)." + echo "If your distro is based on Arch, Centos or Debian then it easily can be added in the script. Report the distro name to the author." ;; esac