¿Cómo saber qué servicios se ejecutan al inicio en Raspberry Pi? (raspbian)

17

Tengo algunos servicios que se ejecutan en el arranque, ¡pero en realidad he olvidado cómo los configuré! Si quiero cambiar su actividad, ¿cómo podría hacer eso? Por ejemplo, tal vez quiero deshabilitar un servicio para que no se inicie en el arranque o tal vez quiero iniciarlo usando un método diferente.

Específicamente, obtuve el servicio openvpn que se ejecuta con éxito en el arranque, pero algunos tutoriales dicen que debo vincular el servicio de los programas de intercambio de archivos con el vpn mismo, de modo que si el vpn se cae, también lo hace el servicio de intercambio de archivos. Pero creo que quizás la ejecución automática de mi VPN está complicando las cosas y debería deshabilitarla o modificar la forma en que se inicia. ¿Pero cómo verificar?

usuario1502186
fuente

Respuestas:

23

Supongo que tiene una Raspberry usando raspian, que, que yo sepa, aún no se ha movido a systemd . En este caso, la respuesta es la siguiente.

EDITAR: para systemd (Jessie o posterior), ver en la parte inferior .

Primero, puede determinar qué sistema se está ejecutando actualmente mediante el comando:

  sudo service --status-all

Obtendrá una lista algo así:

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

Los + 's indican los servicios en funcionamiento, el -'s servicios de no correr, los ?' S servicios que no permiten el estado como un posible comando: en su mayoría son comandos que no tienen que correr todo el tiempo, sólo de vez en cuando.

Para volver a su pregunta, debe comprender los niveles de ejecución en Linux. Los niveles de ejecución (0-6 + S) identifican qué servicios pueden / deben ejecutarse. Una secuencia de arranque progresa desde un nivel de ejecución inicial (especificado en / etc / inittab , en mi Raspberry

 # The default runlevel.
 id:2:initdefault:

esta línea lo identifica como 2 y luego avanza a su nivel de ejecución final estándar de distribución (de 2 a 5). Identifica su nivel de ejecución actual mediante el comando

 # runlevel
 N 2

(en mi caso, un servidor sin cabeza). Los otros niveles de ejecución son (nuevamente desde é / etc / inittab *):

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

El usuario único (1) a menudo también se identifica como S.

En un arranque normal, comienza en 2 y progresa hasta 5. Para encontrar los servicios iniciados en esta progresión, emita el 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

Esto imprime la línea que comienza con Default-Start en todos los archivos en /etc/init.d/ , que es donde se guardan los archivos que identifican los diversos servicios. La línea en cuestión identifica el nivel de ejecución donde se iniciará cada servicio. Si se inicia un servicio en el nivel de ejecución N, cuando el sistema avanza a N + 1, no necesita iniciarse nuevamente, pero si se encuentra que no se está ejecutando, se inicia.

Esto le da una idea exacta de las diferentes etapas en que se inician los servicios. Pero dentro del mismo nivel de ejecución, las líneas Required-Start y should-Start definen dependencias duras y suaves para el servicio en cuestión, es decir , servicios que deben ejecutarse y deben ejecutarse antes de que el servicio sea examinado. Sin los servicios de arranque obligatorio, el servicio en cuestión fallará, sin los servicios de arranque debería, en cambio, no habrá una falla general, posiblemente solo la falta de algunas características útiles. Lo mismo ocurre en la parada con Required-Stop y Should-Stop.

SYSTEMD :

El comando para enumerar todos los servicios es

systemctl list-unit-files

que escupirá mucha información. Para seleccionar todos los servicios habilitados , es decir , aquellos que se inician en el arranque, simplemente siga el comando anterior de la siguiente manera:

 systemctl list-unit-files | grep enabled 

Prefiero este comando a systemctl list-units : la diferencia es que este solo mostrará los servicios que su sistema operativo tiene en memoria = el sistema operativo cree que necesita), mientras que systemctl list-unit-files mostrará todos los servicios instalados, incluidos los que están enmascarado ( es decir, los que se supone que nunca se inició, ni siquiera de forma manual), y los que se no se activará, que se llama estática . En otras palabras, el comando que sugerí es más completo que el que enumera solo los servicios activos .

NB : systemd es muy diferente de los sistemas init anteriores. En particular, no tiene niveles de ejecución , sino objetivos . los niveles de ejecución todavía existen por razones de compatibilidad, y pueden verse como objetivos específicos al enumerar todos los objetivos disponibles a través de

systemctl list-unit-files --type=target

mientras puede ver su objetivo actual por medio de

$ systemctl get-default
  graphical.target

Para más información sobre esto, puede leer la excelente página introductoria de DigitalOcean .

MariusMatutiae
fuente
Raspbian Jessie usa systemd, pero esta respuesta todavía parece funcionar.
ZX9
1
@ ZX9 Gracias por llamar mi atención sobre esta vieja publicación, he agregado una edición para systemd .
MariusMatutiae
8

Para una simple gestión del servicio de inicio en Raspberry Pi, recomiendo la herramienta rcconf. Le permite activar / desactivar fácilmente los servicios /etc/init.d/. También puede ver si están habilitados y se ejecutarán al inicio.

Para instalar la herramienta

sudo apt-get install rcconf

Y es muy simple usarlo con la interfaz de usuario de texto

sudo rcconf
jjurm
fuente
Esto no responde al OP, que era (y cito): ¿Cómo saber qué servicios se ejecutan al inicio en Raspberry Pi? (raspbian) .
MariusMatutiae
@MariusMatutiae Lo hace, ya que rcconfte dice si un servicio está habilitado o no. Edité la respuesta para decir explícitamente que la herramienta muestra este tipo particular de información.
jjurm
3
sudo nano /etc/rc.local

Aquí es donde inserta el archivo por lotes o los comandos para ejecutar en el arranque. Yo también ejecuto Openvpn en el arranque también :)

Hexark
fuente