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

17

Eu tenho alguns serviços que são executados no boot, mas na verdade esqueci como os configurei! Se eu quiser mudar a atividade deles, como devo fazer isso? Por exemplo, talvez eu queira desativar um serviço para iniciar na inicialização ou talvez queira iniciá-lo usando um método diferente.

Especificamente, eu tenho o serviço openvpn que é executado com êxito na inicialização, mas alguns tutoriais dizem que devo vincular o serviço de programas de compartilhamento de arquivos à própria VPN, de modo que, se a VPN for desativada, o serviço de compartilhamento de arquivos também será afetado. Mas acho que talvez a execução automática do meu vpn esteja complicando as coisas e eu devo desabilitá-lo ou modificar a maneira como ele é iniciado. Mas como verificar?

user1502186
fonte

Respostas:

23

Suponho que você tenha um Raspberry usando raspian, que, até onde eu sei, ainda não foi transferido para o systemd . Nesse caso, a resposta é a seguinte.

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

Primeiro, você pode determinar qual sistema está sendo executado no momento por meio do comando:

  sudo service --status-all

Você receberá uma lista mais ou menos assim:

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

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

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

 # The default runlevel.
 id:2:initdefault:

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

 # runlevel
 N 2

(no meu caso, um servidor sem cabeça). Os outros níveis de execução são (novamente a partir de é / 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 é frequentemente identificado como S.

Em uma inicialização normal, você inicia em 2 e avança 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

Isso 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 mantidos. A linha em questão identifica o nível de execução em que cada serviço deve ser iniciado. Se um serviço é iniciado no nível de execução N, quando o sistema avança para N + 1, ele não precisa ser iniciado novamente, mas, se não encontrar em execução, é iniciado.

Isso fornece uma idéia exata dos diferentes estágios em que os serviços são iniciados. Mas dentro do mesmo nível de execução, as linhas necessárias-Iniciar e deve-Iniciar definir dependências duros e macios para o serviço em questão, ou seja, serviços que deve executar e deve executar antes que o serviço que está sendo examinado. Sem os serviços de início obrigatório, o serviço em questão falhará; sem os serviços de início obrigatório, 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 cuspirá muita informação. Para selecionar todos os serviços ativados , ou seja , aqueles que são iniciados na inicialização, basta preencher o comando acima da seguinte maneira:

 systemctl list-unit-files | grep enabled 

Prefiro esse comando a systemctl list-units : a diferença é que este exibirá apenas os serviços que seu sistema operacional possui na memória = o sistema operacional julga necessário), enquanto systemctl list-unit-files exibirá todos os serviços instalados, incluindo aqueles que são mascarados ( ou seja, aquelas que são supostamente para nunca mais ser iniciado, nem mesmo manualmente), e aqueles que ele vai não ativar, que são chamados de estáticos . Em outras palavras, o comando que sugeri é mais abrangente do que o que lista apenas os serviços ativos .

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

systemctl list-unit-files --type=target

enquanto você pode ver sua meta atual por meio de

$ systemctl get-default
  graphical.target

Para mais informações, leia a excelente página introdutória da DigitalOcean .

MariusMatutiae
fonte
O malandro Jessie usa systemd, mas essa resposta ainda parece funcionar.
ZX9 08/12/16
11
@ ZX9 Obrigado por chamar minha atenção para este post antigo, adicionei uma edição para systemd .
MariusMatutiae
8

Para um gerenciamento simples do serviço de inicialização no Raspberry Pi, recomendo a ferramenta rcconf. Permite ativar / desativar facilmente os serviços /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 usá-lo com interface do usuário de texto

sudo rcconf
jjurm
fonte
Isso não responde ao OP, que era (e cito): Como saber quais serviços são executados na inicialização do Raspberry Pi? (raspbian) .
MariusMatutiae
@MariusMatutiae Sim, pois rcconfinforma se um serviço está ativado ou não. Editei a resposta para dizer explicitamente que a ferramenta mostra esse tipo específico de informação.
Jjurm
3
sudo nano /etc/rc.local

Aqui é onde você insere arquivos ou comandos em lote para executar na inicialização. Eu executo automaticamente o Openvpn na inicialização também :)

Hexark
fonte