16

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

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

3 ответа3

22

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

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

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

  sudo service --status-all

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

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

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

Чтобы вернуться к вашему вопросу, вам нужно понять уровень запуска в 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.

8

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

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

sudo apt-get install rcconf

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

sudo rcconf
3
sudo nano /etc/rc.local

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .