Vraag Hoe "service --status-all" resultaten te lezen


Ik moet de momenteel actieve services identificeren, maar ik kan de resultaten van hardlopen niet achterhalen service --status-all, Ik bedoel wat wel ?, - en + bedoel je?

$ 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

En zou het runnen van deze opdracht met sudo enig verschil maken? Ik heb het geprobeerd en in mijn geval maakte het geen verschil, maar kan het verschillen in andere opstellingen?


77
2018-01-17 21:52


oorsprong




antwoorden:


De uitvoer van service --status-all geeft de status van services aan die worden beheerd door System V.

De + geeft aan dat de service actief is, - geeft een gestopt service aan. Je kunt dit zien door te hardlopen service SERVICENAME status voor een + en - service.

Sommige services worden beheerd door Upstart. U kunt de status van alle bekijken Upstart diensten met sudo initctl list. Elke service beheerd door Upstart wordt ook weergegeven in de lijst die wordt aangeboden door service --status-all maar wordt gemarkeerd met a ?.

Referentie: man service


84
2018-02-17 16:37



Mogelijk interessant: uitvoer voor gemarkeerde services - & + gaat naar stdout, output voor services gemarkeerd ? zal naar stderr gaan. - dave1010
"Elke service die door Upstart wordt beheerd, wordt ook weergegeven in de lijst die wordt geleverd door service --status-alles, maar wordt gemarkeerd met een?." Dit is niet helemaal waar. Gewoon geprobeerd beide opdrachten op een server. service --status-all geeft me 43 diensten. initctl list geeft me 93. Slechts een handvol van die 93 zijn duplicaten. - Andrew Ensley
Mijn Ubuntu-machine vermeldt "Upstart-services" niet als "?" door service --status-alles - hfrmobile
@hfrmobile tenzij je nog op 14.04 bent of geef op tijdens het booten om te gebruiken Upstart u gebruikt nu 'systemd'. Ik zie ook niet meer "?" op mijn 16.04-systeem. - Sean
16.10 lopen ... - hfrmobile


Het is niet gedocumenteerd in de manpage, maar een snelle blik op de bron bevestigt de eerste schatting:

  • +: de service is actief
  • -: de service is niet actief
  • ?: de servicestatus kan (om wat voor reden dan ook) niet worden bepaald.

De eigenlijke code:

 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

De voorwaarden zijn:

  • als het init-script geen a ondersteunt status opdracht, de staat is ?.
  • als het init-script (met de status argument) uitgangsstatus is nul en output is niet leeg, de status is +.
  • anders is de staat -.

25
2017-07-09 16:00





ik geloof dat + betekent dat de service actief / actief is, - betekent dat het inactief / gestopt is, en ? betekent dat het commando niet definitief kan bepalen of het actief is of niet, omdat de service geen a heeft status commando in het servicescript. De service --status-all commando loopt eigenlijk service <service-name> status voor elke beschikbare service.


1
2017-07-09 15:53





Ik vind dat met / zonder sudo maakt een verschil.

Sommige services in /var/run/ hebben leestoegang alleen voor rootgebruiker. Die services tonen status [-] zonder sudo, en [+] met sudo.


0
2018-03-09 23:20



Weet je het zeker? sommige servicestatussen veranderen dynamisch; misschien zie je alleen variatie - Zanna