FreeBSD kézikönyv
Előző | Fejezet 11. Beállítás és finomhangolás | Következő

# 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.

Előző | Tartalom | Következő
Az alkalmazások beállítása | Fel | A `cron` segédprogram beállítása

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>.