A LinuxForum.hu-n "mmp" jóvoltából megkaptam a választ az /etc/runlevel.d/custom/ könyvtárban lévő üres my_firewall.service file-ra vonatkozó kérdésre: minek nekem egy üres file?
(/usr/share/doc/Packages/uhu-init/README_HU)
Az init szkriptek indításával kapcsolatos információk az /etc/runlevel.d könyvtárban találhatók, ezen belül is a default és a custom könyvtárakban. Csak a nem ponttal kezdődő, .service-re végződő nevű fájlok vannak figyelembe véve, minden más fájl (ezáltal automatikusan az összes backup fájl) olyan, mintha ott sem lenne. A két könyvtár alatt lévő azonos nevű fájlok minden esetben összetartoznak, együtt írnak le egy szolgáltatást. A default alatti fájlnak léteznie kell, ha egy adott névvel csak a custom alatt van fájl, az ismét olyan, mintha ott sem lenne. Ha a default alatti fájlnak a custom alatti párja hiányzik, az pontosan olyan, mintha ott volna, üres tartalommal.
A default könyvtár rendeltetése az, hogy az alkalmazás ide szállítja a szolgáltatás alapértelmezett paramétereinek leírását. A default alatti fájlok a csomagkezelőben nincsenek konfigurációs fájlként megemlítve, és pontosan azt a célt szolgálják, hogy a rendszergazda soha ne változtasson rajtuk, hanem az alapértelmezett érték később bármikor lekérdezhető legyen a jóvoltukból.
A custom könyvtár alá a csomagok üres konfigurációs fájlt szállítanak. (Megj.: ezt a fájlt az uhubuild magától létrehozza, a csomag készítőjének nem kell ezzel törődnie, csak a default alatti fájlt kell elkészítenie.) Az itteni fájlokkal tudjuk az alapértelmezett értékeket felülbírálni, ha erre van szükségünk.
Amennyiben egy szolgáltatáshoz a custom könyvtár alatt is tartozik fájl, az esetben a custom alatt definiált értékek felülbírálják a default alatt definiált értékeket. Például ha a default/my_firewall.service fájlban Sequence=10 szerepel, míg a custom/my_firewall.service fájlban Sequence=93, akkor 93-as Sequence értékkel fog a tűzfal elindulni.
Tehát, ha nincs a customban semmi, az sem baj, de ha valamit meg akarunk változtatni, akkor azt nem a defaultban kell megtenni. Mivel azonban a my_firewall.service file-t mi készítettük, mindaddíg, amíg változtatni nem akarunk rajta, nem kell a customban semmi.
Még néhány fontos dolog (ide copy-zom, mert nem tudom, hogy hogyan kell belinkelni a feltöltött file-t).
Szintaxis
-------
A fájlok Kulcs=Érték típusú sorokból állnak. A sor elején, végén, valamint az egyenlőségjel körül állhat szóköz. A kulcs helyén csak előre definiált nevek állhatnak.
Bizonyos kulcsok többnyelvű értékkel is rendelkezhetnek. Ekkor a nyelvmegjelölés nélküli érték mindig az angol (en_US) nyelvű, míg egyéb nyelvű érték megadásához a nyelv kódját szögletes zárójelben a kulcs után fűzzük, például:
Summary=Something
Summary[hu]=Valami
Ha egy változó többször is definiálva van, az utolsó definíció lesz a mérvadó.
Üres sor, illetve "#" jellel kezdett megjegyzés-sor bárhol állhat a fájlban.
A létező kulcsok az alábbiak:
Summary: A szolgáltatás rövid (maximum 60--80 karakteres) megnevezése több nyelven, nagybetűvel kezdve, pont nélkül zárva (mintha cím volna), UTF-8 kódolással.
Description: A szolgáltatás részletes leírása, tetszőleges hosszan (igaz, tördelésre nincs lehetőségünk a fájlban), nagybetűvel kezdve, szépen mondatokra tagolva, és ennek megfelelően ponttal zárva. Szintén UTF-8 kódolással.
MsgDesc: A szolgáltatás rövid neve a Summary-hoz hasonlóan (sok esetben pontosan ugyanaz a szöveg megfelel). A szolgáltatás indítása, leállítása vagy újratöltése során jelenik meg egy sablon üzenet, amelynek ez a szöveg részét képezi, feltéve hogy a megfelelő MsgStart, MsgStop vagy MsgReload nincsen definiálva, és az init szkript valóban kiírja ezt a sztringet.
MsgStart, MsgStop, MsgReload: Az indítási, leállítási vagy újratöltési teljes üzenet. Akkor adjuk meg, ha az MsgDesc-et felhasználó sablon üzenet nem felel meg céljainknak.
Script: Az indítandó szkript teljes útvonallal.
SupportsReload: yes vagy no aszerint, hogy a szkript támogatja-e a reload akciót.
Runlevels: A 0123456 szintek közül azok felsorolása, melyeken a szolgáltatásnak aktívnak kell lennie. (Default: üres)
Sequence: 00-tól 99-ig terjedően a szolgáltatás indítási sorszáma. A leállítás az indítással ellentétes sorrendben történik. (Default: 20)
Nice: -20-tól 19-ig a nice szint. (Default: 0) UID és GID: ilyen felhasználóval és csoporttal indul az init szkript (nemcsak start, hanem tetszőleges akció esetén). (Default: 0)
RestartSeconds: restart akció esetén ennyi másodpercet vár a stop és a start között. (Default: 1)
Resources: az indított szolgáltatás által lefoglalt erőforrás(ok) neve felsorolva (vesszővel vagy pontosvesszővel elválasztva).
Priority: előjeles egész szám az azonos erőforrásra pályázó szolgáltatások prioritásának eldöntésére (nagyobb pozitív szám = erősebb prioritás). (Default: 0)
További mezők is születhetnek a jövőben.
service
-------
A service program szolgál egy démon vagy szolgáltatás indítására, leállítására. Használat: service szolgáltatásneve akció, például:
service nscd start
service apache reload
A kívánt akció a futási szinttől teljesen függetlenül megtörténik. A szolgáltatás leíró fájljában/fájljaiban definiált szkript indul el az adott argumentummal.
A szkript indítása előtt a service megtesz pár dolgot az egységes környezet beállítása érdekében.
A szkriptnek csak a "start", "stop", "status" és opcionálisan a "reload" argumentumot kell kezelnie. A "restart" és a "force-reload" opciókat maga a service program értelmezi: "restart" esetén először "stop", majd sikeres lefutás esetén "start" opcióval indítja a szkriptet. "force-reload" opció esetén a service program nézi meg, hogy a szolgáltatás támogatja-e a "reload" akciót (erre szolgál a SupportsReload mező), ha igen, akkor "reload" opcióval, ellenkező esetben "stop" majd "start" opcióval indítja az init szkriptet.
A service program végzi az egyéb akciók elutasítását is.
srvmgr
------
Az srvmgr (service manager) programmal állíthatjuk az egyes szolgáltatások tulajdonságait (természetesen a default alatti fájlokon nem tudunk változtatni, csak a custom alattiakon), illetve végezhetünk lekérdezéseket.
Használati módjai:
srvmgr --list
Kilistázza a létező szolgáltatásokat.
srvmgr --show szolgáltatásneve
Megjeleníti az adott szolgáltatás aktuális paramétereit. Az alapértelmezett értékeket, valamint a default és a custom könyvtárak alatti adatokat összedolgozza, és szép formátumban írja ki (minden kulcs csak egyszer szerepel, a nem többnyelvű kulcsok (például Nice) mindenképp szerepelnek stb.) Extra szolgáltatásként a nyelvfüggő értékeknél az aktuális nyelvhez passzolót kiemeli a Kulcs[]= kezdetű sorban, például ha LANG=en_US, akkor Summary[]=Something, míg ha LANG=hu_HU, akkor Summary[]=Valami sort ír ki. Ez a [] szintaxis csak ebben a kimenetben szerepel, a fájlokban érvénytelen.
srvmgr --show-default szolgáltatásneve
Mint a --show, de csak a default alatti fájl tartalmát veszi figyelembe, így nem a tényleges, hanem a default értékeket írja ki.
srvmgr --show-custom szolgáltatásneve
Mint a --show, de csak a custom alatti fájl tartalmát veszi figyelembe, így csak azokat a dolgokat írja ki, melyeket megváltoztattuk a defaulthoz képest. Ennek megfelelően a fájlokban egyáltalán meg nem említett mezőkhöz sem írja ki a default értéket, ellentétben az előző két kapcsolóval.
srvmgr --set szolgáltatásneve kulcs érték
Az adott kulcshoz az adott értéket rendeli, vagyis elhelyez egy újabb sort a custom alatti fájlban (létrehozza a custom alatti fájlt, ha az még nem létezett, valamint törli onnan ugyanezen kulcs régebbi értékét, ha volt ilyen).
Példa:
srvmgr --set nscd Sequence 10
elhelyez egy Sequence=10 sort a custom fájlban, így 10-es sorszámmal fog indulni az nscd, függetlenül a default értéktől.
srvmgr --clear szolgáltatásneve kulcs
Törli az adott kulcsot a custom fájlból, visszaállítva a defaultot.
Példa:
srvmgr --clear nscd Sequence
törli a Sequence= kezdetű sort a custom fájlból, így a szolgáltatás indításakor a default fájlban lévő érték (vagy ha olyan nincs, akkor az abszolút hard-coded default) fog érvényre jutni.
runlevelchange
-------
futási szintek közti váltást intézi. A régi és az új futási szint értékét kell argumentumként megmondani. --test kapcsoló esetén nem élesben dolgozik, csak kiírja, hogy mit tenne.
Példa:
runlevelchange 3 5
először leállítja azokat, akiknek 3-as szinten futniuk kellett, de 5-ösön nem, majd indítja azokat, akik 3-ason nem futottak, de 5-ösön futniuk kell.
TAB
-------
Az srvmgr és service parancsok paraméterei könnyen és gyorsan begépelhetők a tabulátor billentyű által nyújtott automatikus kiegészítés használatával.
Nyelv
-------
Az srvmgr parancs a standard nyelvi beállításokhoz igazodik (LC_ALL, LC_MESSAGES, LANG környezeti változók) a megfelelő lokalizált szöveg kiválasztásakor.
Ezzel ellentétben a service és runlevelchange programok, hogy viselkedésük minél kevésbé függjön az őket indító környezettől, a teljes UHU-Linux rendszer alapértelmezett nyelvét, vagyis a /etc/sysconfig/locale fájlban definiált nyelvet használják fel a megfelelő szövegek kiválasztásakor, amely
szövegeket aztán az Msg* környezeti változóban adnak tovább az init szkriptek számára.
SP
Utolsó kommentek