2014-12-15 02:59:25 +0000 2014-12-15 02:59:25 +0000
17
17

Jak powiedzieć, które usługi są uruchamiane podczas startu na Raspberry Pi? (raspbian)

Mam kilka usług, które działają na starcie, ale właściwie zapomniałem, jak je skonfigurowałem! Jeśli chcę zmienić ich aktywność, jak mogę to zrobić? Na przykład, może chcę wyłączyć usługę z uruchamiania przy starcie systemu lub może chcę ją uruchomić inną metodą.

Konkretnie, mam usługę openvpn, która z powodzeniem uruchamia się przy starcie systemu, ale niektóre tutoriale mówią, że powinienem powiązać usługę programów do udostępniania plików z samym vpn, tak że jeśli vpn padnie, to padnie też usługa udostępniania plików. Ale myślę, że być może autorunning mojego vpn'a komplikuje sprawy i powinienem go wyłączyć lub zmodyfikować sposób w jaki się uruchamia. Ale jak to sprawdzić?

Odpowiedzi (3)

23
23
23
2014-12-16 14:49:09 +0000

Zakładam, że masz Raspberry używając raspian, który, według mojej najlepszej wiedzy, nie przeniósł się jeszcze do systemd. W tym przypadku odpowiedź jest następująca.

EDIT: dla systemd (Jessie lub nowszy), zobacz na dole.

Po pierwsze, możesz określić, który system jest obecnie uruchomiony za pomocą polecenia:

sudo service --status-all

Otrzymasz listę nieco podobną do tej:

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

Znaki + oznaczają usługi uruchomione, znaki _- usługi nie uruchomione, znaki ? usługi, które nie dopuszczają _status jako możliwej komendy: są to w większości komendy, które nie muszą być uruchamiane cały czas, tylko od czasu do czasu.

Wracając do twojego pytania, musisz zrozumieć runlevels w Linuksie. Runlevels (0-6 + S) określają, które usługi mogą/muszą być uruchomione. Sekwencja startowa postępuje od początkowego runlevel (określonego w /etc/inittab, w moim Raspberry

# The default runlevel.
 id:2:initdefault:

ta linia identyfikuje go jako 2, a następnie przechodzi do standardowego dla Twojego distro końcowego runlevel (od 2 do 5). Identyfikujesz swój aktualny runlevel za pomocą komendy

# runlevel
 N 2

(w moim przypadku jest to serwer bezgłowy). Pozostałe runlevels to (znowu z é/etc/inittab):

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

Single user (1) często jest również identyfikowany jako S.

W normalnym starcie zaczynasz od 2 i przechodzisz do 5. Aby znaleźć usługi uruchomione w tej progresji, wydaj polecenie:

# 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

To wypisuje linię, która zaczyna się od Default-Start we wszystkich plikach w /etc/init.d/, czyli tam, gdzie przechowywane są pliki identyfikujące różne usługi. Linia ta identyfikuje poziom uruchomienia, na którym każda z usług ma być uruchomiona. Jeśli usługa jest uruchomiona na poziomie N, to gdy system przejdzie do poziomu N+1, nie musi być ponownie uruchamiana, ale jeśli nie jest uruchomiona, to jest uruchamiana.

To daje dokładne pojęcie o różnych etapach, w których usługi są uruchamiane. Jednak w obrębie tego samego poziomu uruchomienia linie Required-Start i Should-Start określają twarde i miękkie zależności dla danej usługi, czyli usługi, które muszą zostać uruchomione i powinny zostać uruchomione przed badaną usługą. Bez usług Required-Start usługa ulegnie awarii, bez usług Should-Start zamiast tego nie będzie ogólnej awarii, być może tylko brak niektórych użytecznych funkcji. To samo występuje przy zatrzymaniu z Required-Stop i Should-Stop.

SYSTEMD :

Komenda do wypisania wszystkich usług to

systemctl list-unit-files

, która wypluje wiele informacji. Aby wybrać wszystkie usługi włączone, _tzn. te, które są uruchamiane przy starcie systemu, po prostu wytłuść powyższe polecenie w następujący sposób:

systemctl list-unit-files | grep enabled

Wolę tę komendę od systemctl list-units: różnica polega na tym, że ta wyświetli tylko usługi, które twój OS ma w pamięci = OS myśli, że ich potrzebuje), podczas gdy systemctl list-unit-files wyświetli wszystkie zainstalowane usługi, w tym te, które są maskowane (i.e. te, które mają nigdy nie być uruchomione, nawet ręcznie), i te, których nie uruchomi, które są nazywane static. Innymi słowy, polecenie, które zaproponowałem jest bardziej wszechstronne niż to, które wyszczególnia tylko aktywne usługi.

NB : systemd jest bardzo różny od poprzednich systemów init. W szczególności, nie ma runlevels, ale targets. runlevels nadal istnieją ze względu na kompatybilność, i mogą być widziane jako konkretne cele poprzez wylistowanie wszystkich dostępnych celów poprzez

systemctl list-unit-files --type=target

podczas gdy możesz zobaczyć swój aktualny cel poprzez

$ systemctl get-default
  graphical.target

Więcej na ten temat możesz przeczytać doskonałą stronę wprowadzającą DigitalOcean .

8
8
8
2015-04-09 19:26:26 +0000

Do prostego zarządzania usługami startowymi na Raspberry Pi polecam narzędzie rcconf. Pozwala ono w prosty sposób włączać i wyłączać usługi w /etc/init.d/. Można też sprawdzić, czy są one włączone i czy będą uruchamiane przy starcie.

Aby zainstalować narzędzie

sudo apt-get install rcconf

I jest bardzo prosty w użyciu z tekstowym UI

sudo rcconf
```.
3
3
3
2014-12-15 11:09:00 +0000
sudo nano /etc/rc.local

Tutaj wstawiasz plik wsadowy lub komendy do uruchomienia przy starcie systemu. Ja również automatycznie uruchamiam Openvpn na starcie :)