Comando para listar os serviços que iniciam na inicialização?


144

Existe um comando para listar os serviços executados na inicialização? Eu imagino que envolveria a análise /etc/init.d/e os vários /etc/rc.*diretórios.

Respostas:


104

Você pode simplesmente usar o initctl listcomando shell para listar o conteúdo /etc/inite não o dbus-sendcomando sugerido .


2
Isso funciona no Ubuntu 18.04? Eu recebo "initctl: comando não encontrado" (no bash)
— Sanjay Manohar

121

A resposta rápida é: Depende do seu initsistema.

A resposta longa é: Para as versões atuais do Ubuntu, você provavelmente tem uma mistura de Upstart e SystemV . Versões mais recentes do Ubuntu depois do 15.04 "Vivid Vervet" (e outras distribuições Linux como RHEL / CentOS 7) estão mudando para usar o SystemD .

Subir na vida

Para listar todos os serviços:

initctl list

Para listar todos os serviços Upstart e executá initctl show-config-los, esta linha única pode ser útil:

initctl list | awk '{ print $1 }' | xargs -n1 initctl show-config

Sistema V

Para listar todos os serviços:

service --status-all

OU:

# for init scripts:
ls /etc/init.d/

# for runlevel symlinks:
ls /etc/rc*.d/

SystemD

Para listar todos os serviços:

systemctl list-unit-files --type=service

OU:

ls /lib/systemd/system/*.service /etc/systemd/system/*.service

9
Essa deve ser a resposta aceita.
— S06

service --status-allNÃO mostra se os serviços estão habilitados para iniciar na inicialização, pelo menos não no Ubuntu 16. Mostra se os serviços estão em execução no momento ou não.
— Curinga

11
Eu tive que sudo service --status-allcomeçar tudo de serviços para aparecer. Alguns estavam ocultos quando eu corri apenas service --status-allem uma conta não raiz.
— Phlucious

@ Phucucious: Obrigado por mencionar isso. Eu achava que era bem conhecido que estes comandos são geralmente executados como root ( systemctl, service, initctl...), como eles são geralmente considerados comandos de administração do sistema.
— TrinitronX 11/06

13

Os diretórios /etc/init.de /etc/rc.*foram substituídos pela upstartferramenta ' ' init. Embora os scripts nesses diretórios sejam executados conforme o esperado, o novo método para executar coisas no init é definido pelos arquivos em/etc/init/

Você pode listar todos os trabalhos iniciantes consultando upstart pelo dbus:

dbus-send --print-reply --system --dest=com.ubuntu.Upstart \
        /com/ubuntu/Upstart com.ubuntu.Upstart0_6.GetAllJobs

Pode ser necessário alterar 0_6para refletir a versão inicial que você possui. Este comando funciona na minha instalação lúcida.


3
@ Eric H: Você poderia definir a resposta abaixo como correta em vez disso - initctl listé muito melhor do que este comando dbus. Gostaria de deixar esta resposta aqui para referência (em vez de excluí-la completamente).
— Jeremy Kerr

12

Se você deseja uma boa representação gráfica dos serviços e o tempo necessário para inicializar, tente:

apt-get install bootchart

11

Eu usaria initctl show-config <servicename>para realmente obter os detalhes de quando / se seu serviço iniciará durante a inicialização.

Igual a:

$ initctl show-config myservice
myservice
  start on runlevel [2345]
  stop on runlevel [!2345]

Ou para o NFS4 idmap-daemon:

$ initctl show-config idmapd
idmapd
  start on (local-filesystems or mounting TYPE=nfs4)
  stop on runlevel [06]

O chkconfig é preferível apenas nos sistemas baseados no RedHat imho.


11
Essa é a resposta correta. Não tenho ideia de por que todas as respostas erradas e incompletas são tão altamente votadas.
— Cerin

11
Isso não funciona para pessoas que usam o SysV. Concordo que é uma boa resposta, mas está incompleta.
— Gabriel Netto

9

Em 12.04, poderíamos usar:

sudo apt-get install chkconfig
chkconfig --list

mas foi removido em 12.10 .

Saída de amostra:

acpi-support              0:off  1:off  2:on   3:on   4:on   5:on   6:off
acpid                     0:off  1:off  2:off  3:off  4:off  5:off  6:off
apparmor                  0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on

2
Não funciona no Ubuntu. packages.ubuntu.com/…
— AB

@AB obrigado por me avisar! Hoje em dia, é raro os que criticam menos: exige coragem e me permite aprender. atualizado com a versão que funciona no.
— Ciro Santilli新疆改造中心法轮功六四事件



0

Além dos serviços e scripts do sistema em:

/etc/init.d/
/ lib / systemd / system /
/ etc / systemd / system /

Provavelmente também existem aplicativos de AutoStart , por exemplo:

find / -name "*autostart*"

ls -1 "/etc/xdg/autostart" "/home/$USER/.config/autostart" "/usr/share/gdm/autostart"  "/usr/share/gnome/autostart"

-2

Usando gawk:

ls -l /etc/rc*.d/* | gawk 'match($0, /rc([0-6S]).d.*\/(.*)$/, a) {l[a[2]]=l[a[2]]a[1]","}; END{for(v in l){print v,substr(l[v],1,length(l[v])-1)}}'

Saída de amostra:

$ ls -l /etc/rc*.d/* | gawk 'match($0, /rc([0-6S]).d.*\/(.*)$/, a) {l[a[2]]=l[a[2]]a[1]","}; END{for(v in l){print v,substr(l[v],1,length(l[v])-1)}}' | egrep README
README 0,1,2,3,4,5,6,S
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.