11.5. Szolgáltatások indítása

Írta: Tom Rhodes.

A felhasználók közül sokan választják a FreeBSD Portgyűjteményében található külső szoftverek telepítését. A telepített szoftvert gyakran ilyenkor úgy kell beállítani, hogy a rendszer indulásával együtt induljon. Az olyan szolgáltatások, mint például a mail/postfix vagy a www/apache13 csupán két olyan szoftvercsomag, amelyet a rendszerrel együtt kell elindítani. Ebben a szakaszban a külső szoftverek indítására használatos eljárásokkal foglalkozunk.

A FreeBSD-ben megjelenő legtöbb szolgáltatás, mint például a cron(8), a rendszerindító szkripteken keresztül kel életre. Habár ezek a szkriptek a FreeBSD egyes verziói vagy az egyes gyártók esetén különbözhetnek, azonban az mindegyikükben közös, hogy az elindításukra vonatkozó beállítások egyszerű indítószkriptekkel adhatóak meg.

Az rc.d eljövetele előtt az alkalmazások indításához be kellett másolni egy egyszerű indítószkriptet a /usr/local/etc/rc.d könyvtárba, melyet aztán a rendszer indításához használt szkriptek olvastak be. Ezek a szkriptek aztán később a rendszer indítása során végrehajtódtak.

Miközben rengetegen próbálták beolvasztani ezt a megszokott konfigurációs stílust egy új rendszerbe, a külső alkalmazások működtetéséhez továbbra is az előbb említett könyvtárban elhelyezett szkriptekre van szükség. A szkriptek közötti apró eltérések leginkább abban nyilvánulnak meg, hogy az rc.d könyvtárat használják-e vagy sem. A FreeBSD 5.1-es verziója előtt a régebbi konfigurációs megoldást használták, de az új szkriptek szinte az összes esetben megfelelőnek bizonyultak.

Jóllehet minden szkriptnek teljesítenie kell minimális elvárásokat, ezek a legtöbb esetben függetlenek a FreeBSD konkrét verziójától. Minden szkriptnek a rendszer által végrehajthatónak kell lennie. Ezt úgy érhetjük el, ha a chmod parancs felhasználásával beállítjuk a 555 kódú engedélyeket. Ezen felül a szkriptnek még tudnia kell kezelnie a start és stop paramétereket.

A legegyszerűbb indítószkript valahogy így nézhet ki:

#!/bin/sh
echo -n ' utility'

case "$1" in
start)
        /usr/local/bin/utility
        ;;
stop)
        kill -9 `cat /var/run/utility.pid`
        ;;
*)
        echo "Usage: `basename $0` {start|stop}" >&2
        exit 64
        ;;
esac

exit 0

Ez a szkript képes értelmezni a start és stop parancsokat az alkalmazás számára, ami itt egyszerűen csak a utility nevet kapta.

Manuálisan így tudjuk elindítani:

# /usr/local/etc/rc.d/utility start

Habár nem mindegyik külső szoftvert kell külön megadni az rc.conf állományban, majdnem minden nap módosítani kell egy portot a beállítások elfogadásához. Az egyes alkalmazásokra vonatkozó kiegészítő információkhoz nézzük meg a telepítés után keletkező üzeneteket. Egyes külső szoftverekhez mellékelnek olyan indítószkripteket, amelyek lehetővé teszik az alkalmazás meghívását az rc.d könyvtárból. Ezekről a következő szakaszban még szólni fogunk.

11.5.1. Az alkalmazások részletesebb beállítása

Most miután a FreeBSD rendelkezik egy rc.d könyvtárral, az alkalmazások indításának beállítása is könnyebbé és ügyesebbé vált. Az rc.d működéséről szóló szakaszban megismert kulcsszavak segítségével az alkalmazások mostantól kezdve a többi szolgáltatás, például a DNS után indulnak el, és az rc.conf állományon keresztül a szkriptekbe huzalozottak helyett most már tetszőleges paramétereket is átadhatunk stb. Egy egyszerű szkript ehhez hasonlóan néz ki:

#!/bin/sh
#
# PROVIDE: utility
# REQUIRE: DAEMON
# KEYWORD: shutdown

#
# NE VÁLTOZTASSUK MEG AZ ITT LÉVŐ ALAPÉRTELMEZÉSEKET,
# INKÁBB AZ /etc/rc.conf ÁLLOMÁNYBAN ÁLLÍTSUK BE EZEKET
#
utility_enable=${utility_enable-"NO"}
utility_flags=${utility_flags-""}
utility_pidfile=${utility_pidfile-"/var/run/utility.pid"}

. /etc/rc.subr

name="utility"
rcvar=`set_rcvar`
command="/usr/local/sbin/utility"

load_rc_config $name

pidfile="${utility_pidfile}"

start_cmd="echo \"Starting ${name}.\"; /usr/bin/nice -5 ${command} ${utility_flags} ${command_args}"

run_rc_command "$1"

Ez a szkript gondoskodik arról, hogy a utility nevű alkalmazás a daemon szolgáltatás után induljon el. Emellett még felkínál egy módszert a PID avagy futó programok azonosítójának beállítására és nyomonkövetésére is.

Ezt követően az /etc/rc.conf állományból az alkalmazás elindítható az alábbi sor hozzáadásával:

utility_enable="YES"

Ez a módszer megkönnyíti a paranccsorban átadott paraméterek módosítását, az /etc/rc.subr állományban szereplő alapértelmezett függvények használatát, az rcorder(8) segédprogrammal szembeni kompatibilitást és az rc.conf állomány könnyebb beállítását.

11.5.2. Szolgáltatások indítása szolgáltatásokkal

Más szolgáltatások, mint például a POP3 vagy IMAP szerverek démonai stb. az inetd(8) segítségével indíthatóak el. Ez a Portgyűjteményből telepített szolgáltatások esetén magával vonja az adott segédprogram felvételét vagy a hozzátartozó sor engedélyezését az /etc/inetd.conf állományban. Az inetd működésével és annak beállításával mélyrehatóbban az inetd szakasza foglalkozik.

A legtöbb esetben a cron(8) démon használata kézenfekvő a rendszerszintű szolgáltatások elindításában. Ez a megközelítés számos előnyt tartogat, mivel a cron ezeket a programokat a felhasználó crontab állománya alapján futtatja. Ezzel a mezei felhasználók számára is lehetővé válik, hogy elindítsanak és karbantsanak alkalmazásokat.

A cron segédprogramnak van egy olyan speciális lehetősége, hogy az idő helyett a @reboot értéket adhatjuk meg. Ennek hatására a feladat a cron(8) indításával együtt fut le, tehát megszokott esetben a rendszer indítása során.

Ha kérdése van a FreeBSD-vel kapcsolatban, a következő címre írhat (angolul): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon: <gabor@FreeBSD.org>.