No Ubuntu, existe um comando para mostrar uma lista de TODOS os serviços de auto-inicialização?

21

No Ubuntu,

  1. Existe um comando para mostrar uma lista de todos os serviços de autostart?
  2. Existe um comando para verificar se um serviço é iniciado automaticamente no momento da inicialização ou não?

Eu fiz o Google e o IRC. Eu não consigo encontrar a resposta. Talvez não existam tais comandos no Ubuntu. No começo, eu achava que todos os serviços iniciados automaticamente estariam abaixo de /etc/rc2.d/ , mas eu estava errado sobre isso. Alguns são configurados apenas sob /etc/init/*.conf . Então eu tentei a ferramenta chkconfig (instalada manualmente), ela não funciona o tempo todo. Por exemplo, ele dá o resultado errado para mongodb , que é iniciado automaticamente a partir de /etc/init/mongodb.conf .

service --status-all e initctl list só podem informar o status atual dos serviços em vez do status de inicialização automática. update-rc.d é um comando para alterar o status de início automático em vez de mostrar o status.

Se não houver resposta à minha pergunta, estou apenas imaginando por que é tão difícil verificar os serviços de início automático no Ubuntu.

    
por SSS 28.11.2012 / 08:11

4 respostas

10

O Ubuntu usa Upstart em vez do tradicional sistema init . O Upstart é mais strong que o init, mas é um pouco mais complicado que init .

O Upstart, em contraste, é baseado em eventos. Um "evento" pode ser algo como "inicialização" ... ou pode ser bem mais específico, como "a rede está pronta para usar agora". Você pode especificar quais scripts dependem de quais eventos. Qualquer coisa que não esteja esperando por um evento pode ser executada sempre que houver CPU disponível.

Esse sistema baseado em eventos tem outra vantagem: você pode, teoricamente, usá-lo mesmo depois que o sistema estiver em funcionamento. O Upstart está destinado a assumir tarefas como conectar dispositivos externos, como pendrives (atualmente manipulados pelo udev e hal), ou executar programas em horários específicos (atualmente executados pelo cron).

Como você deve saber agora, um daemon morto (que não é executado na inicialização) pode estar ativo e ser iniciado devido a um evento.

O Ubuntu tem o / etc / init, para o Upstart, e o /etc/init.d, para os arquivos SysV antigos. Alguns dos arquivos nele são scripts regulares do SysV Init que ainda não foram migrados. Mas alguns serviços que migraram mantêm um link de /etc/init.d para / lib / init / upstart-job. Se você executar um desses, funcionará, mas imprimirá um aviso primeiro:

Rather than invoking init scripts through /etc/init.d, use the service(8) utility, e.g. service mysql restart

Since the script you are attempting to invoke has been converted to an Upstart job, you may also use the restart(8) utility, e.g. restart mysql.

Em uma máquina Upstart, o init vem de upstart. Em vez de executar um script rc mestre que chama os scripts para um nível de execução específico, o init do Upstart obtém os trabalhos do seu diretório de trabalho.

Agora sabemos que não há uma maneira simples de listar daemons de autostart, você deve listar todos os daemons e verificá-los um por um. O daemon pode ser iniciado por init ou por upstart ou até mesmo por um evento posterior. A maneira mais simples de obter essa lista é executar este comando no shell:

initctl show-config

A saída é assim:

...
hostname
  start on startup
udevtrigger
  start on ((startup and started udev) and not-container)
tty2
  start on (runlevel [23] and ((not-container or container CONTAINER=lxc) or container CONTAINER=lxc-libvirt))
...

Alguns itens, como o primeiro, são tão simples que hostname começa na inicialização. Mas outros itens podem parecer mais complicados. (Mas felizmente legível :-))

    
por 28.11.2012 / 19:11
5

Na verdade, todos os serviços estão presentes apenas em /etc/init.d:

rc0.d contains the services which runs in runlevel 0
rc1.d contains the services which runs in runlevel 1
rc2.d contains the services which runs in runlevel 2
rc3.d contains the services which runs in runlevel 3
rc4.d contains the services which runs in runlevel 4
rc5.d contains the services which runs in runlevel 5
rc6.d contains the services which runs in runlevel 6

Além disso, todos os serviços estão presentes em rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d também, mas é um link simbólico para /etc/init.d .

Veja aqui este é o conteúdo do diretório rc1.d :

lrwxrwxrwx 1 root root  20 Aug 17 14:54 K15pulseaudio -> ../init.d/pulseaudio
lrwxrwxrwx 1 root root  22 Nov 28 18:47 K20acpi-support -> ../init.d/acpi-support
lrwxrwxrwx 1 root root  20 Aug 17 14:54 K20kerneloops -> ../init.d/kerneloops
lrwxrwxrwx 1 root root  23 Nov  7 15:24 K20openbsd-inetd -> ../init.d/openbsd-inetd
lrwxrwxrwx 1 root root  15 Aug 17 14:54 K20saned -> ../init.d/saned
lrwxrwxrwx 1 root root  27 Aug 17 14:54 K20speech-dispatcher -> ../init.d/speech-dispatcher
-rw-r--r-- 1 root root 369 Apr 14  2012 README
lrwxrwxrwx 1 root root  19 Aug 17 14:54 S30killprocs -> ../init.d/killprocs
lrwxrwxrwx 1 root root  19 Aug 17 14:54 S70dns-clean -> ../init.d/dns-clean

Aqui você pode observar o link simbólico para o init.d (K15pulseaudio - > ../ init.d / pulseaudio).

Mas aqui todo serviço está vinculado ao init.d, certo? Mas todo serviço não será iniciado; o motivo é dois scripts.

O primeiro é um script S (S30killprocs) --- > começar

O segundo é um script k (K15pulseaudio) --- > matar

Todos os serviços de script K eliminam os serviços e todos os serviços de script S iniciam os serviços para esse nível de execução.

Em resumo

S70dns-clean -> ../init.d/dns-clean start dns-clean service no nível de execução 1.

K15pulseaudio -> ../init.d/pulseaudio mata pulseaudio service no nível de execução 1.

    
por 28.11.2012 / 14:42
2

Você pode instalar o sysv-rc-conf que é um programa ncurses para configurar / mostrar os níveis de rc graficamente.

    
por 09.12.2013 / 12:47
0

Is there a command to show a list of all autostart services?

Veja aqui: update-rc-d-cheat-sheet

Is there a command to check if a service is autostarted at boot time or not?

Nenhum, eu sei de (o que não significa nada;), mas você pode começar a ler aqui: fórum askubuntu - dependência de serviço

    
por 11.02.2014 / 22:28