Man koennte gucken, ob's noch aktive Prozesse von "normalen" Benutzern gibt:
Code: Alles auswählen
$ ps axo euid,pid | awk 'BEGIN{while(getline<"/etc/login.defs"){if("UID_MIN"==$1)min=$2;if("UID_MAX"==$1)max=$2}}min<=$1&&max>=$1'
-- da kommt dann (e)UID und PID raus. Wenn man das als Abfrage in der Form "gibt es noch Prozesse dieser Art?" verwenden will, kann man
Code: Alles auswählen
if ps axo euid,pid | awk 'BEGIN{while(getline<"/etc/login.defs"){if("UID_MIN"==$1)min=$2;if("UID_MAX"==$1)max=$2}}{if(min<=$1&&max>=$1)exit(r=1)}END{exit(!r)}'; then
# ...
fi
schreiben. Nochmal aufgedroeselt:
Code: Alles auswählen
if \
ps axo euid,pid \
| awk '
BEGIN {
while(getline<"/etc/login.defs") {
if ("UID_MIN" == $1)
min = $2;
if ("UID_MAX" == $1)
max = $2
}
}
{
if (min <= $1 && max >= $1)
exit(r = 1)
}
END {
exit(!r)
}
'; then
# ...
fi
Der
BEGIN-Teil findet die Minimal- und Maximal-Werte fuer UIDs raus (Standard ist
1000..60000), im Hauptblock wird abhaengig von der PID der Zeile entweder
exit() ausgeloest oder zur naechsten Zeile gesprungen.
Gruss Cae