Felhasználói eszközök

Eszközök a webhelyen


oktatas:linux:demonok

Különbségek

A kiválasztott változat és az aktuális verzió közötti különbségek a következők.

Összehasonlító nézet linkje

oktatas:linux:demonok [2019/08/16 20:09] (aktuális)
admin létrehozva
Sor 1: Sor 1:
 +[[oktatas:​linux|<​ Linux]]
  
 +====== Démonok ======
 +
 +  * **Szerző:​** Sallai András
 +  * Copyright (c) Sallai András, 2011, 2013, 2016, 2019
 +  * Licenc: GNU Free Documentation License 1.3
 +  * Web: http://​szit.hu
 +
 +===== Bevezetés =====
 +
 +A démonok a háttérben futó olyan folyamatok, amelyek valamilyen szolgáltatást nyújtanak. ​
 +Egy démonfolyamat jellemzője,​ hogy nincs terminálhoz kötve, ezért is mondjuk, hogy a 
 +háttérben fut. Angolul demon vagy daemon. A démont szót a MIT-n használták először programozók a 
 +MAC projekten belül. Az első démont ebben a projektben nevezték el "​Maxwell'​s demon"
 +néven.
 +
 +A démonokat manapság szerverszolgáltatások biztosítására használjuk. A szerver ​
 +szolgáltatások programjainak felesleges a folyamatos terminálkapcsolat,​ így ezeket
 +démonként futtatjuk.
 +
 +A démonokat néha mégis szeretnénk vezérelni, például leállítani,​ elindítani,​ újraindítani,​
 +a konfigurációs fájlokat újratölteni,​ státusz lekérni stb. Ezeket egy külön erre a célra
 +létrehozott script segítségével tudjuk megtenni.
 +
 +===== Démonok megtekintése =====
 +
 +
 +Nézzük meg milyen démonok futnak a háttérben. ​
 +  ps ax
 +
 +
 +A kimenetben a TTY oszlopban, ha kérdőjelet látunk egy folyamatnál,​ akkor az adott folyamat nincs 
 +teletájphoz kötve, vagyis nincs interaktív felülete amelyen keresztül vezérelhetjük,​ akkor az egy démon.
 +
 +A ps ax kimenetéből részlet:
 +<​code>​
 +  PID TTY      STAT   TIME COMMAND
 +...
 + 1684 ?        Ss     0:00 /​usr/​sbin/​apache2 -k start
 + 1704 ?        S      0:00 /​usr/​sbin/​apache2 -k start
 + 1705 ?        S      0:00 /​usr/​sbin/​apache2 -k start
 +...
 +</​code>​
 +A részletben az apache webszerver három példányát látjuk futni démonként. A STAT sorban a démonról informál minket. A Ss azt jelenti fő vezérlő démon, amely
 +alfolyamatokat indít. A fő vezérlő démonok és gyermekfolyamataik kapcsolatát jól szemlélteti ha a ps ax parancshoz egy f kapcsolót is tesztünk:
 +  ps axf
 +
 +<​code>​
 +1862 ?        Ss     0:00 /​usr/​lib/​postfix/​master
 + 1874 ?        S      0:00  \_ pickup -l -t unix -u -c
 + 1875 ?        S      0:00  \_ qmgr -l -t unix -u
 + 1876 ?        Ss     0:00 pure-ftpd (SERVER) ​                                  
 + 1966 ?        Ss     0:00 /​usr/​sbin/​apache2 -k start
 + 2103 ?        S      0:00  \_ /​usr/​sbin/​apache2 -k start
 + 2104 ?        S      0:00  \_ /​usr/​sbin/​apache2 -k start
 + 2105 ?        S      0:00  \_ /​usr/​sbin/​apache2 -k start
 + 2106 ?        S      0:00  \_ /​usr/​sbin/​apache2 -k start
 + 2107 ?        S      0:00  \_ /​usr/​sbin/​apache2 -k start
 + 2942 ?        S      0:00  \_ /​usr/​sbin/​apache2 -k start
 + 2950 ?        S      0:00  \_ /​usr/​sbin/​apache2 -k start
 + 2951 ?        S      0:00  \_ /​usr/​sbin/​apache2 -k start
 + 2952 ?        S      0:00  \_ /​usr/​sbin/​apache2 -k start
 + 2953 ?        S      0:00  \_ /​usr/​sbin/​apache2 -k start
 +</​code>​
 +
 +
 +A démonok között van egy, amely elsőként indul, ez az "​init"​. Minden újabb démont initből származtat a 
 +rendszer. ​
 +
 +
 +===== Több féle démon =====
 +
 +Attól függetlenül,​ hogy egy szerverszolgáltatást nyújtó démonnak vannak-e gyermekfolyamatai,​ a démonokat két módon szokás futtatni:
 +  * egyedüli módban (standalone)
 +  * szuper démont futtatja (inetd)
 +
 +==== Standalone ====
 +A programot elindítjuk,​ bekerül a memóriába,​ és végig ott marad amíg le nem állítjuk.
 +
 +
 +=== System V indítási mód ===
 +A System V típusú unix rendszerekben futási szintek vannak. ​
 +  * 0 Leállítás
 +  * 1 Egyfelhasználós mód
 +  * 2-5 Bármire beállítható
 +  * 6 Újraindítás
 +
 +Futási szintek között az init paranccsal lehet váltani. A 1-es futási szintre ​
 +például a következő paranccsal válthatunk:​
 +  init 1
 +Ezzel a rendszergazda mindenkit kizár a rendszerből.
 +
 +Az aktuális futási szint:
 +  * runlevel
 +    * rendszergazdaként
 +  * who -r
 +    * felhasználóként is
 +
 +  who -r
 +
 +Az alapértelmezett futási szint:
 +  /​etc/​inittab
 +
 +Az állományban egy ilyen beállítást találunk:
 +  :​initdefault:​2
 +
 +
 +
 +Indításuk:​
 +  * /​etc/​init.d/​pure-ftpd start
 +
 +
 +
 +
 +==== Inetd ====
 +
 +A programot egy szuper démon indítja, amelyet inetd-enk hívunk.
 +Az indításhoz be kell jegyeznünk a szerverünket az inetd konfigurációs
 +állományába. ​
 +
 +Az inetd csak akkor indítja el a szolgáltatást,​ ha kérés érkezik.
 +
 +Ha egy szolgáltatást ritkán használunk,​ akkor érdemes beállítani.
 +
 +
 +
 +==== Inet-ből futó démonok újraindítása ====
 +
 +  kill -SIGHUP pidszam
 +
 +
 +  killall -HUP prognev
 +
 +
 +==== Az Inetd újraindítása ====
 +
 +
 +Újraindítás:​
 +
 +  kill -1 `cat /​var/​run/​inetd.pid`
 +
 +===== Példa a démonokra =====
 +
 +==== Postfix démon ====
 +
 +A ps ax kimenetének részlete:
 +<​code>​
 + 2165 ?        Ss     0:00 /​usr/​lib/​postfix/​master
 + 2184 ?        S      0:00 pickup -l -t fifo -u -c
 + 2185 ?        S      0:00 qmgr -l -t fifo -u
 +</​code>​
 +
 +A postfix egy levelezőszerver. Alapértelmezetten 3 folyamatot futtat: ​
 +  * master
 +  * pickup
 +  * qmgr
 +
 +
 +==== Apache ====
 +
 +<​code>​
 + 1369 ?        Ss     0:00 /​usr/​sbin/​apache2 -k start
 +...
 + 1439 ?        S      0:00 /​usr/​sbin/​apache2 -k start
 + 1440 ?        S      0:00 /​usr/​sbin/​apache2 -k start
 + 1441 ?        S      0:00 /​usr/​sbin/​apache2 -k start
 + 1442 ?        S      0:00 /​usr/​sbin/​apache2 -k start
 + 1443 ?        S      0:00 /​usr/​sbin/​apache2 -k start
 +</​code>​
 +
 +Az apache webszerver. Van egy elsődleges szál, amely körülbelül 5 gyermekfolyamatot futtat, amelyek fogadják a webszerver kéréseit. ​
 +==== Popa3d ====
 +
 +<​code>​
 + 1199 ?        Ss     0:00 /​usr/​sbin/​popa3d -D
 +</​code>​
 +
 +A pope3d egy POP3 szerver. ​
 +==== atd démon ====
 +
 +<​code>​
 + 1320 ?        Ss     0:00 /​usr/​sbin/​atd
 +</​code>​
 +
 +Parancsok időzített végrehajtását felügyeli. ​
 +==== SSH démon ====
 +
 +<​code>​
 + 2281 ?        Ss     0:00 /​usr/​sbin/​sshd
 +</​code>​
 +
 +
 +==== Pure-FTPd ====
 +
 +<​code>​
 + 2230 ?        Ss     0:00 pure-ftpd (SERVER)
 +</​code>​
 +
 +
 +==== Samba ====
 +
 +<​code>​
 + 2255 ?        Ss     0:00 /​usr/​sbin/​nmbd -D
 + 2266 ?        Ss     0:00 /​usr/​sbin/​smbd -D
 + 2276 ?        S      0:00 /​usr/​sbin/​smbd -D
 +</​code>​
 +
 +
 +==== Bind ====
 +<​code>​
 +1348 ?        Ssl    0:00 /​usr/​sbin/​named -u bind
 +</​code>​
 +
 +==== cron ====
 +
 +<​code>​
 + 1704 ?        Ss     0:00 /​usr/​sbin/​cron
 +</​code>​
 +
 +
 +==== cups ====
 +
 +<​code>​
 + 1727 ?        Ss     0:00 /​usr/​sbin/​cupsd -C /​etc/​cups/​cupsd.conf
 +</​code>​
 +
 +===== Az rpcbind =====
 +
 +Az rpcbind egy különleges démon. Vannak olyan szerverszolgáltatások -- például NFS, NIS, stb. --, amelyeknél nincs tisztázva milyen porton szolgáltatnak. Az rpcbind megkeresi milyen porton szolgáltatnak ezek a démonok. ​
 +
 +Az rpcbind az 111 UDP és TCP porton várja a kéréseket. ​
 +
 +
 +===== D-Bus =====
 +A D-Bus vagy egyszerűen csak DBus egy szolgáltatás,​ amely lehetővé teszi több folyamat számára a **belső kommunikációt** (inter-process communication - IPC), illetve távoli eljáráshívást (remote procedure call - RPC) használatát. ​
 +
 +Jelenleg a D-Bus a freedesktop.org projekt része. ​ A D-BUS fejlesztését Havoc Pennington a Red Hat vállalatnál kezdte el.
 +
 +Eredetileg azért hozták létre, hogy kiváltsák a CORBA-alapú megoldásokat.
 +
 +Használják:​ Avahi, XChat, udev, gnome, HAL, pidgin, Skype stb.
 +
 +A dbus-monitor parancs kiadásával egyszerűen monitorozható a dbus csatorna:
 +  dbus-monitor
 +
 +A kimenetben ehhez hasonló sorokat láthatunk:
 +<​code>​
 +signal time=1547026815.501068 sender=org.freedesktop.DBus -> destination=:​1.26 serial=92 path=/​org/​freedesktop/​DBus;​ interface=org.freedesktop.DBus;​ member=NameLost
 +   ​string "​org.freedesktop.ReserveDevice1.Audio1"​
 +</​code>​
 +
 +Üzenetküldés parancssorból:​
 +  dbus-send [--system | --session | --address=CÍM] <​objektumútvonal>​ <​interfézs.tag>​ [üzenet...]
 +
 +Típus megadása:
 +  * <​nowiki>​--system</​nowiki>​
 +  * <​nowiki>​--session (alapértelmezés)</​nowiki>​
 +
 +
 +
 +===== Udev =====
 +Az udev egy eszközkezelő. Az udev démon kezeli a /dev könyvtárat,​ dinamikusan. A könyvtár tartalmát eszközcsomópontnak is hívják.
 +
 +Az első /dev könyvtár nem volt dinamikus. Minden lehetséges hardvereszközt felsoroltak,​ amely ilyen formán sok fölösleges helyet foglalt. Dinamikussá a devfs nevű démonnal vált a /dev könyvtár. Így már csak azok az eszközök szerepelnek a /dev könyvtárban,​ amelyek tényelegesen jelen vannak. Az udev leváltotta a devfst. Az udev lehetővé teszi szabályok meghatározását az egyes eszközök számára. ​
 +
 +A devfs-t a 2.3 kerneltől használták. Az udev a 2.6-os kerneltől már a felhasználói térben működik a /dev könyvtár leképezése.
 +
 +A 2.6-os kernel óta van egy sysfs nevű rendszer a Linuxban. A sysfs alapszintű információkat tartalmaz a csatlakozott információkról,​ az adatok a /sys könyvtárban tárolódnak. Az udev figyelembe veszi a sysfs információit is, amit összehasonlít a felhasználói szabálybeállításokkal. A felhasználóknak persze nem kötelező szabályokat megadni. ​
 +
 +A szabályok lehetővé teszik az eszköznevek lecserélését. A szabályokat a /​etc/​udev/​rules.d könyvtárban kell létrehozni,​ egy .rules kiterjesztésű fájlban. A szabályok alkalmazása ábécérendben történik. Ha több szabály is van, mindig az elsőként megtalált szabályt alkalmazza az udev. 
 +
 +Több információért érdemes megnézni az udev kézikönyvét:​
 +  man udev
 +
 +Egyéb irodalom:
 +  * https://​wiki.debian.org/​udev
 +===== A hotplug-rendszer =====
 +
 +A hotplug-rendszer vezérli az egyes eszközök előkészítését,​ inicializálását. ​
 +Figyeli a rendszerbe futás vagy indulás során bekerült új eszközöket. ​
 +Szorosan együttműködik a sysfs és udev démonnal.
 +
 +===== NetworkManager =====
 +
 +A network-manager egy hálózatkezelő keretrendszer (démon és felhasználói ​
 +eszközök).
 +
 +Telepítés:​
 +  apt install network-manager
 +
 +
 +A NetworkManager igyekszik a hálózati kapcsolatok megtartásáról
 +gondoskodni. ​
 +
 +A NetworkManager igyekszik a hálózati konfigurációt automatizálni,​
 +megkönnyíteni. Eredetileg asztali számítógépekre szánták, de
 +néhány nem Debian rendszer, szerverre használja.
 +
 +A NetworkManager részei:
 +  * root nevében futó démon (network-manager)
 +  * egy front-end (előtérben futó program: nmcli, nmtui, network-manager-gnome,​ plasma-nm)
 +
 +A NetworkManager csak azokat az interfészeket kezeli, amelyek nincsenek megadva a 
 +/​etc/​network/​interfaces fájlban.
 +
 +
 +==== Fájlok ====
 +
 +A telepítés után a következő parancsok állnak rendelkezésre:​
 +
 +  * nm-online
 +  * nmcli
 +  * nmtui
 +  * nmtui-connect
 +  * nmtui-edit
 +  * nmtui-hostname
 +
 +
 +A network-manager démon ezen a néven kezelhető:
 +  systemctl stop network-manager
 +  systemctl start network-manager
 +  systemctl restart network-manager
 +
 +
 +Forrás:
 +  * https://​wiki.debian.org/​NetworkManager
 +  * apt-file show network-mananger
 +
 +
 +
 +===== Avahi =====
 +A Zero-configuration networking szabad megvalósítása,​ amely magában foglalja ​
 +a multicast DNS/DNS-SD felderítő szolgáltatást. ​
 +
 +A program közzéteszi és felderíti a helyi hálózat eszközeinek szolgáltatásait.
 +Ilyen szolgáltatások lehetnek a nyomtatás vagy egy másik emberrel való
 +kapcsolat tartás.
 +
 +Az Avahi, Debian rendszeren az avahi-daemon csomagban található,​
 +ha szeretnénk eltávolítani,​ vagy telepíteni.
 +
 +Kezelése:
 +  systemctl restart avahi-daemon
 +
 +Az avahi-daemon mellé szokták telepíteni az avahi-utils csomagot.
 +Az avahi-utils tartalmazza például az avahi-browse parancsot,
 +amellyel a hálózatot tallózhatjuk parancssorból. Például:
 +  avahi-browse -alr
 +
 +A tűzfalon az 5353 UDP portot kell engedélyezni,​ ha erre szükség van.
 +
 +===== Démonok kezelése =====
 +==== Azonnal ====
 +
 +Indítás:
 +  invoke-rc.d démonnév start
 +
 +
 +Leállítás:​
 +  invoke-rc.d démonnév stop
 +
 +Újraindítás:​
 +  invoke-rc.d démonnév restart
 +
 +==== Rendszerrel ====
 +
 +
 +Rendszerrel induljon:
 +  update-rc.d démonnév defaults
 +
 +Rendszerrel ne induljon:
 +  update-rc.d démonnév remove
 +
 +
 +
 +===== Háttérbe tett folyamatok =====
 +
 +Egy program indításakor,​ ha az indítóparancs után egy "&"​ karaktert
 +adunk meg, akkor a program automatikusan háttérbe kerül mint egy démon.
 +Persze egy démonnal ellentétben ez továbbra is teletájphoz lesz kötve. ​
 +
 +
 +Például:
 +  nano &
 +
 +Virtuális terminálon:​
 +<​code>​
 +26119 pts/0    T      0:00 nano
 +</​code>​
 +A "​pts/​0"​ részből látjuk, hogy egy virtuális terminálból lett a háttérbe téve a nano  program.
 +
 +A következő nano a hármas teletájpról tettük háttérbe:
 +<​code>​
 +26222 tty3     ​T ​     0:00 nano
 +</​code>​
 +
 +A "​T"​ betű a megállított vagy nyomkövetett folyamatokra jellemző (stopped ​ vagy  traced).
 +
 +Ha olyan programot teszünk a háttérbe, amelynek nincs interaktív felülete az futó állapotba
 +kerül:
 +<​code>​
 +yes > /dev/null &
 +[1] 3977
 +</​code>​
 +
 +<​code>​
 +3977 pts/2    R      0:44 yes
 +</​code>​
 +
 +
 +===== Kezelés menüs felületen =====
 +
 +Telepítés:​
 +  apt install rcconf
 +Indítás:
 +  rcconf
 +
 +
 +===== Linkek =====
 +
 +  * https://​wiki.debian.org/​DevFS
 +  * https://​debian-handbook.info/​browse/​stable/​sect.hotplug.html (2017)
 +  * http://​unixlinux.tmit.bme.hu/​D-Bus (2019)
 +  * https://​wiki.archlinux.org/​index.php/​udev (2019)
 +  * https://​wiki.archlinux.org/​index.php/​avahi (2019)
oktatas/linux/demonok.txt · Utolsó módosítás: 2019/08/16 20:09 szerkesztette: admin