GNU/Linux >> Znalost Linux >  >> Linux

Jak zjistit, které služby běží při spuštění na Raspberry Pi? (raspbian)

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í :)


Linux
  1. Jak říct Cronovi, aby spouštěl příkaz každý druhý den (lichý/sudý)?

  2. Jak mohu v Linuxu zjistit, který proces poslal mému procesu signál

  3. Jak říct Dolphinu, které soubory má skrýt?

  1. Jak spustit příkaz, který přežije uzavření terminálu?

  2. CentOS / RHEL :Jak zjistit, který uživatel spouští konkrétní příkaz?

  3. Jak zjistím, na jaký uživatelský limit narážím?

  1. Jak spouštět služby DNS a FTP v chrootovém vězení

  2. Jak spustit skript shellu při spuštění

  3. Jak spustit sbt jako démona?