summaryrefslogtreecommitdiffstats
path: root/linhes/linhes-system/lh_restart_needed.sh
diff options
context:
space:
mode:
Diffstat (limited to 'linhes/linhes-system/lh_restart_needed.sh')
-rwxr-xr-xlinhes/linhes-system/lh_restart_needed.sh39
1 files changed, 39 insertions, 0 deletions
diff --git a/linhes/linhes-system/lh_restart_needed.sh b/linhes/linhes-system/lh_restart_needed.sh
new file mode 100755
index 0000000..2db8a2d
--- /dev/null
+++ b/linhes/linhes-system/lh_restart_needed.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+get_boot_kernel() {
+ local get_version=0
+ for field in $(file /boot/vmlinuz*); do
+ if [[ $get_version -eq 1 ]]; then
+ echo $field
+ return
+ elif [[ $field == version ]]; then
+ # the next field contains the version
+ get_version=1
+ fi
+ done
+}
+
+rc=1
+
+libs=$(lsof -n +c 0 2> /dev/null | grep 'DEL.*lib' | awk '1 { print $1 ": " $NF }' | sort -u)
+if [[ -n $libs ]]; then
+ cat <<< $libs
+ echo "# LIBS: reboot required"
+ rc=0
+fi
+
+active_kernel=$(uname -r)
+current_kernel=$(get_boot_kernel)
+#echo $active_kernel
+#echo $current_kernel
+
+if [[ $active_kernel != $current_kernel ]]; then
+ echo "$active_kernel < $current_kernel"
+ echo "# KERNEL: reboot required"
+ rc=0
+fi
+
+if [[ $rc == 1 ]]; then
+ echo "No reboot needed."
+fi
+exit $rc