Je dois identifier les services en cours d'exécution, mais je ne peux pas comprendre les résultats de l'exécution de service --status-all
. Je veux dire qu'est-ce que ?, - et + = moyenne?
$ service --status-all
[ + ] acpid
[ + ] anacron
[ + ] apparmor
[ ? ] apport
[ ? ] atieventsd
[ + ] avahi-daemon
[ ? ] binfmt-support
[ + ] bluetooth
[ - ] brltty
[ + ] console-font
[ + ] console-setup
[ + ] cron
[ + ] cups
[ + ] cups-browsed
[ - ] dbus
[ ? ] dns-clean
[ + ] friendly-recovery
[ - ] grub-common
[ ? ] irqbalance
[ - ] kerneloops
[ ? ] killprocs
[ + ] kmod
[ ? ] lightdm
[ - ] lm-sensors
[ ? ] mysql
[ ? ] networking
[ ? ] ondemand
[ ? ] pppd-dns
[ - ] procps
[ - ] pulseaudio
[ ? ] rc.local
[ + ] resolvconf
[ + ] rfkill-restore
[ + ] rfkill-store
[ - ] rsync
[ + ] rsyslog
[ + ] saned
[ ? ] sendsigs
[ + ] setvtrgb
[ ? ] speech-dispatcher
[ - ] Sudo
[ + ] timidity
[ + ] udev
[ ? ] umountfs
[ ? ] umountnfs.sh
[ ? ] umountroot
[ - ] unattended-upgrades
[ - ] urandom
[ + ] virtualbox
[ - ] x11-common
Et exécuter cette commande avec Sudo ferait-il une différence? Je l'ai essayé et dans mon cas, cela ne faisait aucune différence, mais peut-il différer dans d'autres configurations?
La sortie de service --status-all
répertorie l'état des services contrôlés par System V
.
+
indique que le service est en cours d'exécution, -
indique un service arrêté. Vous pouvez le voir en exécutant service SERVICENAME status
pour un service +
et -
.
Certains services sont gérés par Upstart
. Vous pouvez vérifier le statut de tous les services Upstart
avec Sudo initctl list
. Tout service géré par Upstart
apparaîtra également dans la liste fournie par service --status-all
mais sera marqué avec un ?
.
Référence: man service
Ce n'est pas documenté dans la page de manuel, mais un rapide coup d'œil à la source confirme la première hypothèse:
+
: le service est en cours d'exécution-
: le service n'est pas en cours d'exécution?
: l'état du service ne peut pas être déterminé (pour une raison quelconque). if ! is_ignored_file "${SERVICE}" \
&& [ -x "${SERVICEDIR}/${SERVICE}" ]; then
if ! grep -qs "\(^\|\W\)status)" "$SERVICE"; then
#printf " %s %-60s %s\n" "[?]" "$SERVICE:" "unknown" 1>&2
echo " [ ? ] $SERVICE" 1>&2
continue
else
out=$(env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" status 2>&1)
if [ "$?" = "0" -a -n "$out" ]; then
#printf " %s %-60s %s\n" "[+]" "$SERVICE:" "running"
echo " [ + ] $SERVICE"
continue
else
#printf " %s %-60s %s\n" "[-]" "$SERVICE:" "NOT running"
echo " [ - ] $SERVICE"
continue
fi
fi
#env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" status
fi
Les conditions sont:
status
, l'état est ?
.status
) est à l'état de sortie nul et que la sortie n'est pas vide, l'état est +
.-
.Je crois que +
signifie que le service est actif/en cours d'exécution, -
signifie qu'il est inactif/arrêté et ?
signifie que la commande ne peut pas déterminer de manière concluante si elle est active ou non, car le service n'a pas de commande status
dans le script de service. La commande service --status-all
exécute en fait service <service-name> status
pour chaque service disponible.
Je trouve que courir avec/sans Sudo
fait une différence.
Certains services de /var/run/
ont un accès en lecture uniquement à l'utilisateur root. Ces services affichent l’état [-]
sans Sudo
et [+]
avec Sudo
.