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.

Eric H
fonte

Respostas:

104

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

Scott
fonte
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
TrinitronX
fonte
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.

Jeremy Kerr
fonte
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
BuZZ-dEE
fonte
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.

CBmemnon
fonte
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
Ciro Santilli adicionou uma nova foto
fonte
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新疆改造中心法轮功六四事件
No Precise: packages.ubuntu.com/precise/chkconfig
Ciro Santilli escreveu:
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"
Noam Manos
fonte
-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
Carlos Alvsan
fonte