65 lines
1.5 KiB
Bash
Executable file
65 lines
1.5 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
usage() {
|
|
cat <<EOF
|
|
Usage: $0 [OPTIONS] NOM
|
|
Valide la présence d'un processus d'après son NOM stocké.
|
|
|
|
Les options suivantes sont admises :
|
|
-s, --sane vérifier que le processus est dans un état sain
|
|
-u, --user vérifier que le processus est lancé par un certain user
|
|
-U, --uniq vérifier que le processus n'est lancé qu'une seule fois
|
|
EOF
|
|
}
|
|
|
|
TEMP=`getopt -o hsUu: --long help,sane,user: -n $0 -- "$@"`
|
|
if [ $? != 0 ]; then echo "Terminaison..." >&2; exit 1; fi
|
|
eval set -- "$TEMP"
|
|
|
|
OPT_USER=""
|
|
OPT_SANE=0
|
|
OPT_UNIQ=0
|
|
|
|
while true; do
|
|
case "$1" in
|
|
-u|--user) OPT_USER="$2" ; shift 2 ;;
|
|
-U|--uniq) OPT_UNIQ=1; shift ;;
|
|
-s|--sane) OPT_SANE=1; shift ;;
|
|
-h|--help) usage; exit 0 ;;
|
|
--) shift; break ;;
|
|
*) echo "Erreur interne"; exit -1 ;;
|
|
esac
|
|
done
|
|
|
|
ID_USER="`getent passwd $OPT_USER | cut -d: -f3`"
|
|
|
|
if [ $# -ne 1 ]; then usage; exit -1; fi
|
|
|
|
NAME="$1"
|
|
STATUS=0
|
|
RES="`ps n -eo pid,user,state,command | egrep "$NAME" | egrep "$ID_USER " | egrep -v "grep|$0"`"
|
|
P_USER="` echo $RES | cut -d' ' -f2`"
|
|
P_STATE="` echo $RES | cut -d' ' -f3`"
|
|
|
|
if [ -n "$RES" ]; then
|
|
if [ -n "$OPT_USER" ]; then
|
|
if [ "`getent passwd $OPT_USER`" != "`getent passwd $P_USER`" ]; then
|
|
STATUS=2
|
|
fi
|
|
fi
|
|
if [ $OPT_SANE -eq 1 -a "$P_STATE" = "Z" ]; then
|
|
STATUS=2
|
|
fi
|
|
if [ $OPT_UNIQ -eq 1 ]; then
|
|
if [ `echo -e "$RES" |wc -l` -gt 1 ]; then
|
|
STATUS=2
|
|
fi
|
|
fi
|
|
else
|
|
STATUS=2
|
|
fi
|
|
|
|
[ $STATUS -eq 0 ] && echo "$NAME running"
|
|
|
|
exit $STATUS
|