Předpokládám, že máte Raspberry používající raspian, který podle mého nejlepšího vědomí ještě nepřešel na systemd . V tomto případě je odpověď následující.
UPRAVIT:pro systemd (Jessie nebo novější), viz dole .
Nejprve můžete určit, který systém je aktuálně spuštění pomocí příkazu:
sudo service --status-all
Získáte seznam podobný tomuto:
[ + ] triggerhappy
[ + ] udev
[ ? ] udev-mtab
[ ? ] umountfs
[ ? ] umountnfs.sh
[ ? ] umountroot
[ - ] urandom
[ + ] vsftpd
[ + ] weewx
[ - ] x11-common
+ označují spuštěné služby, - služby ne běžící, ? služby, které neumožňují stav jako možný příkaz:jsou to většinou příkazy, které nemusí běžet pořád, jen občas.
Chcete-li se vrátit ke své otázce, musíte porozumět úrovni běhu s v Linuxu. Úrovně běhu (0-6 + S) určují, které služby mohou/musí být spuštěny. Spouštěcí sekvence postupuje z počáteční úrovně běhu (uvedené v /etc/inittab , v mém Raspberry
# The default runlevel.
id:2:initdefault:
tento řádek jej identifikuje jako 2 a poté postoupí do vaší standardní finální úrovně běhu (od 2 do 5). Aktuální úroveň běhu identifikujete pomocí příkazu
# runlevel
N 2
(v mém případě bezhlavý server). Další úrovně běhu jsou (opět z é/etc/inittab*):
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.
Jediný uživatel (1) je často také označen jako S.
Při normálním spouštění tedy začínáte na 2 a postupujete až na 5. Chcete-li najít služby spuštěné v této progresi, zadejte příkaz:
# 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
Tím se vytiskne řádek, který začíná Výchozí-Start ve všech souborech v /etc/init.d/ , kde jsou uloženy soubory identifikující různé služby. Dotyčný řádek identifikuje runlevel, kde má být každá služba spuštěna. Pokud je služba spuštěna na úrovni běhu N, když systém postoupí na N+1, není třeba ji znovu spouštět, ale pokud zjistí, že není spuštěna, spustí se.
To vám dává přesnou představu o různých fázích, ve kterých jsou služby spouštěny. Ale v rámci stejné úrovně běhu řádky Required-Start a Should-Start definují pevné a měkké závislosti pro danou službu, tj. služby, které musí běžet a měl by spustit před zkoušením služby. Bez služeb Required-Start daná služba selže, bez služeb Should-Start místo toho nedojde k obecnému selhání, možná jen k nedostatku některých užitečných funkcí. Totéž nastane při zastavení s funkcemi Required-Stop a Should-Stop.
SYSTEMD :
Příkaz pro výpis všech služeb je
systemctl list-unit-files
který vyvrhne mnoho informací. Chcete-li vybrat všechny služby povolené , tj. , které jsou spuštěny při bootování, stačí grep výše uvedený příkaz následovně:
systemctl list-unit-files | grep enabled
Dávám přednost tomuto příkazu před systemctl list-units :rozdíl je v tom, že tento zobrazí pouze služby, které má váš operační systém v paměti =OS si myslí, že je potřebuje), zatímco systemctl list-unit-files zobrazí vše nainstalované služby, včetně těch, které jsou maskované (tj. ty, o kterých se předpokládá, že se nikdy nespustí, ani ručně), a ty, které nebude aktivovat, které se nazývají statické . Jinými slovy, příkaz, který jsem navrhl, je obsáhlejší než ten, který uvádí pouze aktivní služby.
Pozn. :systemd se velmi liší od předchozích init systémů. Konkrétně nemá úrovně běhu , ale cíle . úrovně běhu stále existují z důvodů kompatibility a lze je vidět jako konkrétní cíle, když vypíšete všechny dostupné cíle prostřednictvím
systemctl list-unit-files --type=target
zatímco můžete vidět svůj aktuální cíl pomocí
$ systemctl get-default
graphical.target
Pro více informací si můžete přečíst vynikající úvodní stránku DigitalOcean.
Pro jednoduchou správu startovacích služeb na Raspberry Pi doporučuji nástroj rcconf
. Umožňuje vám snadno zapnout/vypnout služby v /etc/init.d/
. Můžete také zjistit, zda jsou povoleny a zda se spustí při spuštění.
Instalace nástroje
sudo apt-get install rcconf
A je velmi jednoduché jej používat s textovým uživatelským rozhraním
sudo rcconf
sudo nano /etc/rc.local
Zde vložíte dávkový soubor nebo příkazy ke spuštění při bootování. Openvpn spouštím také automaticky při bootování :)