nutools/ulib/service

68 lines
2.1 KiB
Plaintext
Raw Normal View History

2013-08-27 15:14:44 +04:00
##@cooked comments # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
## Des outils pour contrôler les services unix
##@cooked nocomments
uprovide service
urequire sysinfos
function __service() {
# Appliquer la commande $2 au service $1, e.g. 'service daemon restart'
# Si la variable SERVICE_OVERRIDE_$1_$2 existe, utiliser la fonction dont le
# nom est donnée par cette variable pour faire l'opération. Si la valeur est
# 1, prendre la fonction nommée SERVICE_OVERRIDE_$1_$2
# Pour information, le nom de la variable est corrigé en remplaçant '-' par
# '_'. Ceci permet d'utiliser des noms de services avec des '-' dans leur
# nom.
# XXX ajouter le support de MacOS X
local overriden="SERVICE_OVERRIDE_${1}_${2}" overridef
overriden="${overriden//-/_}"
overridef="${!overriden}"
if [ -n "$overridef" ]; then
[ "$overridef" == 1 ] && overridef="$overriden"
"$overridef" "$@"
elif [ -x /usr/sbin/service ]; then
/usr/sbin/service "$@"
else
local script="$1"; shift
"/etc/init.d/$script" "$@"
fi
}
function service() {
if [ "$2" == check ]; then
__service "$1" status >&/dev/null
elif [ "$2" == startm ]; then
__service "$1" status >&/dev/null || __service "$1" start
elif [ "$2" == stopm ]; then
__service "$1" status >&/dev/null && __service "$1" stop
elif [ "$2" == restartm ]; then
__service "$1" status >&/dev/null && __service "$1" restart
else
__service "$@"
fi
}
function service_start() {
# démarrer le service $1 de façon inconditionnelle
service "$1" start
}
function service_startm() {
# démarrer le service $1 s'il n'est pas déjà démarré
service "$1" startm
}
function service_stop() {
# arrêter le service $1 de façon inconditionnelle
service "$1" stop
}
function service_stopm() {
# arrêter le service $1 s'il n'est pas déjà arrêté
service "$1" stopm
}
function service_reload() {
# recharger le service $1
service "$1" reload
}
function service_status() {
# tester/afficher le status du service $1
service "$1" status
}