diff --git a/check_cpu b/check_cpu index bbea1f2686b22353d29cebc82318da82224a94c8..c5db3e70e0fcc892f057742634be5a4b72ee9132 100755 --- a/check_cpu +++ b/check_cpu @@ -19,13 +19,14 @@ # 2022-03-10 v1.8 <axel.hahn@iml.unibe.ch> add cli param -p; update help # 2022-03-22 v1.9 <axel.hahn@iml.unibe.ch> fix syntax error on 100% idle # 2022-04-14 v1.10 <axel.hahn@iml.unibe.ch> show consuming cpu processes with top and ps +# 2022-08-29 v1.11 <axel.hahn@iml.unibe.ch> replace pipe to prevent start of metrics section # ====================================================================== . $(dirname $0)/inc_pluginfunctions self_APPNAME=$( basename $0 | tr [:lower:] [:upper:] ) -self_APPVERSION=1.9 +self_APPVERSION=1.11 # ---------------------------------------------------------------------- # functions @@ -45,6 +46,9 @@ ______________________________________________________________________ check cpu usage and cpu wait Cpu infos are taken from output of top command. +Oh higher cpu usage it can show processes that cause cpu waits and +with most cpu consumption. + SYNTAX: $(basename $0) [-w WARN_LIMIT] [-c CRITICAL_LIMIT] [-i CRITICAL_IO_WAIT] [-p PROCESS_LIMIT] @@ -147,7 +151,9 @@ ph.status "CPU-USAGE [%] ${cpuNonIdle} ... user: ${cpuUser} - system: ${cpuSyste # v1.6: show processes of cpu wait (status D in proces list) plist=$( ps aux | awk '$8 ~ /(D|STAT)/ { print $0 }' ) -echo "$plist" | grep "[0-9]" >/dev/null \ + +# replace pipe to prevent start of metrics section +echo "$plist" | tr '|' ':' | grep "[0-9]" >/dev/null \ && echo \ && echo "For analysis of cpu waits - processes with status D:" \ && echo "$plist" @@ -161,7 +167,7 @@ if [ $iUsed -gt $iMinCpuUsageToShowProcesses ]; then topout=$( top -b -n 1 -d 0.1 ) typeset -i iStart=$( echo "$topout" | grep -n "PID.*USER" | cut -f 1 -d ':' ) typeset -i iEnd=$iStart+5 - echo "$topout" | sed -n "${iStart},${iEnd}p" + echo "$topout" | sed -n "${iStart},${iEnd}p" | tr '|' ':' echo echo "output of ps:" ps aux | head -1; ps aux | sort -nrk 3,3 | head -n 5