6.5. Запуск Сервисов

На любой системе вы сможете найти множество сервисов, которые могут быть запущены разными способами.

Программное обеспечение, установленное из коллекции портов или пакетов обычно записывает свои скрипты в /usr/local/etc/rc.d which is invoked at который выполняется с аргументом start при запуске и с аргументом stop при завершении работы системы. Этот метод запуска рекомендуется, если вы запускаете сервисы как root, или же они должны быть запущены с привилегиями root. Эти скрипты устанавливаются вместе с пакетами, и соответственно, при удалении пакетов скрипты будут также удалены.

Типичный скрипт из /usr/local/etc/rc.d , выполняющийся при запуске выглядит следующим образом:

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

Этот скрипт следует выполнять с помощью start при запуске и с помощью stop при завершении работы.

Некоторые сервисы должны быть запущены inetd(8) при установке соединения с определённым портом. Это может понадобиться, например, для почтовых серверов (POP, IMAP, и т.д.). Для этого нужно отредактировать файл /etc/inetd.conf. Подробнее о работе с этим файлом вы можете прочитать в inetd(8).

Некоторые дополнительные системные сервисы могут быть не учтены в файле /etc/rc.conf. Тогда для их запуска нужно прописать соответствующую команду в /etc/rc.local. Во FreeBSD 3.1 не предусмотрен /etc/rc.local; но считается признаком хорошего тона создание этого файла администратором. Заметьте, что rc.local считается самым последним местом, куда можно прописывать команду запуска сервисов. Если есть другое место, в которое бы вы могли записать их - запишите их лучше там.

Note: Не записывайте свои команды в /etc/rc.conf. Для запуска демонов, или для выполнения вашей команды во время запуска - запишите ваш скрипт в /usr/local/etc/rc.d.

Также допускается использование cron(8) для запуска системных сервисов. Этот метод обладает рядом преимуществ, которые заключаются не только в том, что cron(8) запускает эти процессы, как владелец crontab, , но и в том, что сервисы могут быть запущены и не привилегированными пользователями.

Очень удобно пользоваться недокументированной возмоожностью cron(8), которая заключается в том, что если вместо времени указать @reboot, запланированная программа будет запущена сразу после загрузки cron(8) после перезапуска системы.