#!/bin/bash

# Schwellenwerte in Megabyte
WARN=1000  # Beispiel: 1000 MB
CRIT=2000  # Beispiel: 2000 MB
COUNT_PROC=20 #Anzahl der prozesse die ausgeben werden sollen -1 maximal 20
#diese werden nach speicherverbrauch sortiert


#Programm Variablen, bitte nicht verändern
#Laufvariable
i=0
#da bei null angefangen wird zu zählen-proccount um einen dezimieren
COUNT_PROC=$((COUNT_PROC-1))
# Anfang der Ausgabe für den Service
output="P \"Speicherverbrauch der Prozesse in MB\" "

# ps Befehl, um Prozessname und Speicherverbrauch (RSS) zu bekommen
while IFS= read -r line; do
    memory=$(echo $line | awk '{print $1}')
    #teilen durch 1024
    memory=$((memory/1000))
    process=$(echo $line | awk '{print $2}' | sed 's/[^a-zA-Z0-9]/_/g')

    # Hinzufügen der Performance-Daten für jeden Prozess zum Output
    printf -v format_i "%02d" $i
    output+="NR-$format_i-${process}=${memory};${WARN};${CRIT}|"
    if [ $i == $COUNT_PROC ]
    then
      break
    fi
    if [ $COUNT_PROC > -1 ]
    then
      i=$((i+1))
    fi
done <<< $(ps -eo rss,comm --sort=-rss | awk 'NR>1')





#letztes semikolon entfernen
output="${output%?}"
#entferne , aus dem string
output=${output//[,]/}
#enterfne leerzeichnen aus dem string
output=${output//[_]/}
# Ausgabe des gesammelten Outputs
echo "$output"

