Як визначити, які послуги запускаються при запуску на Raspberry Pi? (raspbian)


16

Я маю деякі служби що бігають на черевикові але я фактично забув як я встановлюю їх! Якщо я хочу змінити їхню діяльність, як я можу це зробити? Наприклад, може бути, я хочу відключити послугу від запуску під час завантаження або, можливо, я хочу запустити її за допомогою іншого методу.

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

Відповіді:


21

Я припускаю, що у вас є Raspberry, використовуючи raspbian, який, наскільки мені відомо, ще не перейшов до systemd . У цьому випадку відповідь така.

EDIT: для systemd (Jessie або пізніше), див. Внизу .

По-перше, можна визначити, яка система наразі запускається за допомогою команди:

  sudo service --status-all

Ви отримаєте список, подібний до цього:

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

The + вкажіть служби, що працюють, -'s послуги ні біг, ? послуги, які не дозволяють статус як можлива команда: це в основному команди, які не повинні працювати весь час, лише зрідка.

Щоб повернутися до вашого питання, ви повинні зрозуміти рівень s в Linux. Рівні виконання (0-6 + S) визначають, які послуги можуть / повинні виконуватися. Послідовність завантаження просувається від початкового рівня (вказано в / etc / inittab , в моїй малині

 # 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

Це виводить рядок, що починається з Початок за замовчуванням у всіх файлах у /etc/init.d/ , де зберігаються файли, що ідентифікують різні послуги. Відповідна лінія ідентифікує рівень запуску кожної служби. Якщо служба запущена на рівні N, коли система переходить до N + 1, її знову не потрібно запускати, але якщо вона виявилася не запущеною, вона запускається.

Це дає точне уявлення про різні етапи запуску послуг. Але в межах одного рівня запуску рядки Required-Start і Should-Start визначають жорсткі і м'які залежності для даної послуги, тобто послуги, які обов'язково запустити і слід запустити перед початком перевірки послуги. Без служб Required-Start сервіс, про який йде мова, не вдасться, без служб Should-Start замість того, щоб не було загальної невдачі, можливо, просто відсутність деяких корисних функцій. Те ж саме відбувається на зупинці з Required-Stop і Should-Stop.

SYSTEMD :

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

systemctl list-unit-files

що виплюне багато інформації. Щоб вибрати всі послуги увімкнено , тобто , які запускаються під час завантаження, просто скопіюйте наведену вище команду наступним чином:

 systemctl list-unit-files | grep enabled 

Я віддаю перевагу цій команді systemctl список-одиниці : відмінність полягає в тому, що це буде тільки відображати послуги, які ваша ОС має в пам'яті = ОС думає, що вона потребує), поки systemctl list-unit-файли відобразиться все встановлених послуг, включаючи ті, які є маскується ( тобто ті, які ніколи не повинні бути запущені, навіть не вручну), і ті, які він буде ні активувати, які називаються статичний . Іншими словами, запропонована мною команда є більш вичерпною, ніж лише одна активна послуги.

NB : systemd сильно відрізняється від попередніх init систем. Зокрема, цього немає рівні , але цілей . рівні все ще існують з причин сумісності, і їх можна побачити як конкретні цілі, перераховуючи всі доступні цілі за допомогою

systemctl list-unit-files --type=target

поки ви можете побачити поточну ціль за допомогою

$ systemctl get-default
  graphical.target

Більше про це можна прочитати Відмінна вступна сторінка DigitalOcean .


Відмінне і переконливе пояснення. Дякую!
user1502186

Raspbian Jessie використовує systemd, але ця відповідь, здається, працює.
ZX9

1
@ ZX9 Дякуємо, що звернув увагу на цю стару публікацію, я додав редагування для systemd .
MariusMatutiae

8

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

Щоб встановити інструмент

sudo apt-get install rcconf

І дуже просто використовувати його з текстовим інтерфейсом

sudo rcconf

Це не відповідає ОП, який був (і я цитую): Як визначити, які послуги запускаються при запуску на Raspberry Pi? (raspbian) .
MariusMatutiae

@MariusMatutiae Це робить, оскільки rcconf повідомляє, чи увімкнено послугу. Я відредагував відповідь, щоб явно сказав, що цей інструмент показує цей тип інформації.
jjurm

3
sudo nano /etc/rc.local

Тут ви можете вставити командний файл або команди для запуску під час завантаження. Я автоматично запускаю Openvpn під час завантаження :)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.