Как определить, какие службы запускаются при запуске на Raspberry Pi? (Raspbian)

17

У меня есть некоторые службы, которые запускаются при загрузке, но я действительно забыл, как я их настраивал! Если я хочу изменить их деятельность, как я могу это сделать? Например, может быть, я хочу отключить запуск службы при загрузке или, возможно, я хочу запустить ее другим способом.

В частности, у меня есть сервис openvpn, который успешно запускается при загрузке, но в некоторых руководствах говорится, что я должен связать сервис программ обмена файлами с самим vpn, так что если vpn выходит из строя, то и сервис обмена файлами тоже. Но я думаю, что, возможно, автозапуск моего vpn усложняет ситуацию, и я должен отключить его или изменить способ его запуска. А как проверить?

user1502186
источник

Ответы:

23

Я предполагаю, что у вас есть Raspberry с использованием raspian, который, насколько мне известно, еще не перешел на systemd . В этом случае ответ будет следующим.

РЕДАКТИРОВАТЬ: для systemd (Джесси или позже), смотрите внизу .

Во-первых, вы можете определить, какая система работает в данный момент, с помощью команды:

  sudo service --status-all

Вы получите список примерно так:

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

Знаки « указывают на работающие службы, « службы не работают, « ?» - службы, которые не допускают статус в качестве возможной команды: в большинстве случаев это команды, которые не нужно запускать постоянно, а иногда.

Чтобы вернуться к вашему вопросу, вам нужно понять уровень запуска в Linux. Уровни запуска (0-6 + S) определяют, какие службы могут / должны быть запущены. Последовательность загрузки начинается с начального уровня запуска (указан в / etc / inittab , в моей Raspberry).

 # The default runlevel.
 id:2:initdefault:

эта строка определяет его как 2, а затем переходит к стандартному финальному уровню запуска вашего дистрибутива (от 2 до 5). Вы определяете свой текущий уровень выполнения с помощью команды

 # runlevel
 N 2

(в моем случае безголовый сервер). Другие уровни выполнения (снова из é / etc / inittab *):

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

Один пользователь (1) часто также обозначается как S.

Таким образом, при обычной загрузке вы начинаете с 2 и прогрессируете до 5. Чтобы найти службы, запущенные в этой последовательности, введите команду:

 # 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

Это печатает строку, которая начинается с Default-Start во всех файлах в /etc/init.d/ , где хранятся файлы, идентифицирующие различные сервисы. Строка, о которой идет речь, определяет уровень запуска, где должна запускаться каждая служба. Если служба запускается на уровне выполнения N, когда система переходит на N + 1, ее не нужно запускать снова, но если она не работает, она запускается.

Это дает вам точное представление о различных этапах запуска служб. Но на одном и том же уровне выполнения строки Required-Start и Should-Start определяют жесткие и мягкие зависимости для рассматриваемой службы, то есть службы, которые должны работать и должны запускаться до проверки службы. Без служб Required-Start соответствующая служба потерпит неудачу, без услуг Should-Start вместо этого не будет общего сбоя, возможно, просто нехватка некоторых полезных функций. То же самое происходит при остановке с помощью Required-Stop и Should-Stop.

SYSTEMD :

Команда для перечисления всех служб

systemctl list-unit-files

который будет выплевывать много информации. Чтобы выбрать все включенные службы , т. Е. Те, которые запускаются при загрузке, просто выполните команду grep следующим образом:

 systemctl list-unit-files | grep enabled 

Я предпочитаю эту команду системным спискам модулей : разница в том, что эта команда будет отображать только те сервисы, которые ваша ОС имеет в памяти = ОС считает, что это необходимо), в то время как системные файлы списков модулей будут отображать все установленные сервисы, включая те, которые замаскировано ( то есть те , которые , как предполагается , никогда не должен быть запущен, даже не вручную), и те , которые он не активировать, которые называются статическими . Другими словами, предложенная мною команда является более полной, чем та, в которой перечислены только активные службы.

Примечание : systemd сильно отличается от предыдущих систем инициализации. В частности, он имеет не уровни выполнения , а цели . Уровни выполнения все еще существуют по причинам совместимости, и их можно рассматривать как конкретные цели, перечисляя все доступные цели через

systemctl list-unit-files --type=target

в то время как вы можете увидеть свою текущую цель с помощью

$ systemctl get-default
  graphical.target

Подробнее об этом вы можете прочитать на превосходной вводной странице DigitalOcean .

MariusMatutiae
источник
Распбиан Джесси systemd, но этот ответ все еще работает.
ZX9
1
@ ZX9 Спасибо, что обратили мое внимание на этот старый пост, я добавил правку для systemd .
MariusMatutiae
8

Для простого запуска службы управления на Raspberry Pi я рекомендую инструмент rcconf. Позволяет легко включать / выключать сервисы в /etc/init.d/. Вы также можете увидеть, если они включены и будут работать при запуске.

Чтобы установить инструмент

sudo apt-get install rcconf

И очень просто использовать его с текстовым интерфейсом

sudo rcconf
jjurm
источник
Это не отвечает на OP, который был (и я цитирую): Как определить, какие службы запускаются при запуске на Raspberry Pi? (распбиан) .
MariusMatutiae
@MariusMatutiae Это делает, так как rcconfговорит вам, включен ли сервис или нет. Я отредактировал ответ, чтобы прямо сказать, что инструмент отображает этот конкретный вид информации.
jjurm
3
sudo nano /etc/rc.local

Здесь вы вставляете командный файл или команды для запуска при загрузке. Я автоматически запускаю Openvpn при загрузке :)

Hexark
источник