Cómo leer los resultados de "service --status-all"

77

Necesito identificar los servicios actualmente en ejecución, pero no puedo entender los resultados de ejecutar service --status-all , quiero decir, ¿qué hace ? , - y + significa?

$ 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

¿Y ejecutar este comando con sudo haría alguna diferencia? Lo probé y en mi caso no hizo ninguna diferencia, pero ¿puede diferir en otras configuraciones?

    
pregunta Muhammad Gelbana 17.01.2014 - 22:52

4 respuestas

84

La salida de service --status-all enumera el estado de los servicios controlados por System V .

El + indica que el servicio se está ejecutando, - indica un servicio detenido. Puede ver esto ejecutando service SERVICENAME status para un servicio + y - .

Algunos servicios son gestionados por Upstart . Puede verificar el estado de todos los servicios de Upstart con sudo initctl list . Cualquier servicio administrado por Upstart también se mostrará en la lista proporcionada por service --status-all , pero se marcará con ? .

Referencia: man service

    
respondido por el Sean 17.02.2014 - 17:37
25

No está documentado en la página de manual, pero un vistazo rápido a la fuente confirma la primera suposición:

  • + : el servicio se está ejecutando
  • - : el servicio no se está ejecutando
  • ? : el estado del servicio no se puede determinar (por alguna razón).

El código real :

 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

Las condiciones son:

  • si el script de inicio no admite un comando status , el estado es ? .
  • si el script de inicio (con el argumento de status ) sale es cero y la salida no está vacía, el estado es + .
  • de lo contrario, el estado es - .
respondido por el muru 09.07.2015 - 18:00
1

Creo que + significa que el servicio está activo / ejecutándose, - significa que está inactivo / detenido, y ? significa que el comando no puede determinar de manera concluyente si está activo o no, ya que el servicio no lo hace tener un comando status en el script de servicio. El comando service --status-all realmente ejecuta service <service-name> status para cada servicio disponible.

    
respondido por el Arronical 09.07.2015 - 17:53
0

Me parece que correr con / sin sudo hace la diferencia.

Algunos servicios en /var/run/ tienen acceso de lectura solo al usuario raíz. Esos servicios muestran el estado [-] sin sudo , y [+] con sudo .

    
respondido por el user663581 10.03.2017 - 00:20

Lea otras preguntas en las etiquetas