Como saber quais serviços são executados na inicialização do Raspberry Pi? (raspbian)

16

Eu tenho alguns serviços que são executados na inicialização, mas eu realmente esqueci como configurá-los! Se eu quiser mudar a atividade deles, como posso fazer isso? Por exemplo, talvez eu queira impedir que um serviço inicie na inicialização ou talvez eu queira iniciá-lo usando um método diferente.

Especificamente, eu tenho no serviço openvpn que roda com sucesso na inicialização, mas alguns tutoriais dizem que eu deveria amarrar o serviço de programas de compartilhamento de arquivos à própria vpn para que, se a vpn cair, o serviço de compartilhamento de arquivos também caia. Mas acho que talvez a execução da minha VPN esteja complicando as coisas e eu deveria desativá-la ou modificar a maneira como ela é lançada. Mas como verificar?

    
por user1502186 15.12.2014 / 03:59

3 respostas

20

Estou supondo que você tenha um Raspberry usando o raspian, que, pelo que sei, ainda não mudou para systemd . Nesse caso, a resposta é a seguinte.

EDIT: para systemd (Jessie ou posterior), veja na parte inferior .

Primeiro, você pode determinar qual sistema está atualmente executando por meio do comando:

  sudo service --status-all

Você receberá uma lista assim:

  [ + ]  triggerhappy
  [ + ]  udev
  [ ? ]  udev-mtab
  [ ? ]  umountfs
  [ ? ]  umountnfs.sh
  [ ? ]  umountroot
  [ - ]  urandom
  [ + ]  vsftpd
  [ + ]  weewx
  [ - ]  x11-common

Os + indicam serviços em execução, os serviços - 's não em execução, os ? serviços que não permitem status como um comando possível: eles são principalmente comandos que não precisam ser executados o tempo todo, apenas ocasionalmente.

Para voltar à sua pergunta, você precisa entender runlevel s no Linux. Runlevels (0-6 + S) identificam quais serviços podem / devem ser executados. Uma seqüência de inicialização progride de um nível de execução inicial (especificado em / etc / inittab , no meu Raspberry

 # The default runlevel.
 id:2:initdefault:

esta linha identifica-a como 2 e, em seguida, avança para o nível de execução final padrão da sua distribuição (de 2 a 5). Você identifica seu runlevel atual por meio do comando

 # runlevel
 N 2

(no meu caso, um servidor sem cabeçalho). Os outros runlevels são (novamente em é / etc / inittab *):

 # Runlevel 0 is halt.
 # Runlevel 1 is single-user.
 # Runlevels 2-5 are multi-user.
 # Runlevel 6 is reboot.

O usuário único (1) também é identificado como S.

Em uma inicialização normal, você começa em 2 e progride até 5. Para encontrar os serviços iniciados nessa progressão, emita o comando:

 # grep -nrI Default-Start /etc/init.d
 umountroot:7:# Default-Start:
 checkroot.sh:8:# Default-Start:     S
 kbd:6:# Default-Start:     S
 isc-dhcp-server:11:# Default-Start:     2 3 4 5
 mountkernfs.sh:7:# Default-Start:     S
 hostname.sh:7:# Default-Start:     S
 mountnfs.sh:7:# Default-Start:     S
 halt:6:# Default-Start:
 dphys-swapfile:20:# Default-Start:     2 3 4 5
 bootlogs:7:# Default-Start:     1 2 3 4 5
 rc.local:6:# Default-Start:     2 3 4 5
 hostapd:9:# Default-Start:      2 3 4 5
 keyboard-setup:8:# Default-Start:     S
 lightdm:7:# Default-Start:     2 3 4 5
 procps:11:# Default-Start:     S
 mysql:9:# Default-Start:     2 3 4 5
 single:6:# Default-Start:     1
 vsftpd:7:# Default-Start:       2 3 4 5
 samba:7:# Default-Start:     2 3 4 5
 mountall.sh:6:# Default-Start:     S
 weewx:20:# Default-Start:     2 3 4 5
 umountnfs.sh:7:# Default-Start:
 triggerhappy:6:# Default-Start:     2 3 4 5
 ifplugd:24:# Default-Start:     2 3 4 5
 alsa-utils:9:# Default-Start:     S
 bootmisc.sh:7:# Default-Start:     S
 sendsigs:6:# Default-Start:
 console-setup:7:# Default-Start:     S
 nfs-common:7:# Default-Start:     2 3 4 5 S
 checkroot-bootclean.sh:6:# Default-Start:     S
 rsyslog:7:# Default-Start:     2 3 4 5
 x11-common:7:# Default-Start:     S
 mountdevsubfs.sh:7:# Default-Start:     S
 cron:10:# Default-Start:     2 3 4 5
 mountnfs-bootclean.sh:6:# Default-Start:     S
 mountall-bootclean.sh:6:# Default-Start:     S
 screen-cleanup:11:# Default-Start:     S
 udev:6:# Default-Start:     S
 ssh:7:# Default-Start:  2 3 4 5
 haveged:8:# Default-Start:     2 3 4 5
 hwclock.sh:26:# Default-Start:     S
 plymouth:9:# Default-Start:     2 3 4 5
 motd:7:# Default-Start:     1 2 3 4 5
 killprocs:6:# Default-Start:     1
 networking:6:# Default-Start:     S
 fake-hwclock:9:# Default-Start:     S
 udev-mtab:6:# Default-Start:     S
 apache2:6:# Default-Start:     2 3 4 5
 reboot:6:# Default-Start:
 umountfs:6:# Default-Start:
 plymouth-log:9:# Default-Start: S
 openvpn:11:# Default-Start:     2 3 4 5
 kmod:8:# Default-Start:     S
 ntp:7:# Default-Start:   2 3 4 5
 rpcbind:9:# Default-Start:     S 2 3 4 5
 urandom:6:# Default-Start:     S
 rmnologin:6:# Default-Start:     2 3 4 5
 checkfs.sh:7:# Default-Start:     S
 sudo:8:# Default-Start:     2 3 4 5
 mtab.sh:6:# Default-Start:     S
 dbus:6:# Default-Start:     2 3 4 5
 rsync:8:# Default-Start:     2 3 4 5

Isto imprime a linha que começa com Default-Start em todos os arquivos em /etc/init.d / , que é onde os arquivos que identificam os vários serviços são manteve. A linha em questão identifica o nível de execução em que cada serviço deve ser iniciado. Se um serviço for iniciado no nível de execução N, quando o sistema progredir para N + 1, ele não precisará ser iniciado novamente, mas se não for executado, será iniciado.

Isso lhe dá uma ideia exata dos diferentes estágios em que os serviços são iniciados. Mas dentro do mesmo runlevel, as linhas Required-Start e Should-Start definem dependências hard e soft para o serviço em questão, ie serviços que devem executar e devem é executado antes do serviço que está sendo examinado. Sem os serviços de Início Necessário, o serviço em questão falhará, sem os serviços Should-Start, em vez disso, não haverá falha geral, possivelmente apenas a falta de alguns recursos úteis. O mesmo ocorre na parada com parada obrigatória e parada obrigatória.

SYSTEMD :

O comando para listar todos os serviços é

systemctl list-unit-files

que vai cuspir muita informação. Para selecionar todos os serviços ativados , isto é, , aqueles que são iniciados na inicialização, apenas grep o comando acima da seguinte forma:

 systemctl list-unit-files | grep enabled 

Eu prefiro este comando para systemctl list-units : a diferença é que este só irá mostrar os serviços que o seu sistema operacional tem na memória = o SO acha necessário), enquanto o systemctl list- arquivos unitários exibirão todos serviços instalados, incluindo aqueles mascarados ( ie aqueles que nunca devem ser iniciados, nem mesmo manualmente), e aqueles que ele não ativa, que são chamados de static . Em outras palavras, o comando que sugeri é mais abrangente do que aquele que lista apenas os serviços ativos .

NB : o systemd é muito diferente dos sistemas init anteriores. Em particular, não possui runlevels , mas alvos . runlevels ainda existem por motivos de compatibilidade e podem ser vistos como alvos específicos listando todos os destinos disponíveis por meio de

systemctl list-unit-files --type=target

enquanto você pode ver sua meta atual por meio de

$ systemctl get-default
  graphical.target

Para saber mais sobre isso, leia DigitalOcean Excelente página introdutória .

    
por 16.12.2014 / 15:49
8

Para o gerenciamento simples de serviços de inicialização no Raspberry Pi, eu recomendo a ferramenta rcconf . Ele permite que você ative / desative facilmente os serviços em /etc/init.d/ . Você também pode ver se eles estão ativados e serão executados na inicialização.

Para instalar a ferramenta

sudo apt-get install rcconf

E é muito simples de usar com interface de texto

sudo rcconf
    
por 09.04.2015 / 21:26
3
sudo nano /etc/rc.local

Aqui é onde você insere o arquivo em lote ou os comandos a serem executados na inicialização. Eu automaticamente executo Openvpn na inicialização também:)

    
por 15.12.2014 / 12:09