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

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 "" in
    start)
            /usr/local/bin/foobar
            ;;
    stop)
            kill -9 `cat /var/run/foobar.pid`
            ;;
    *)
            echo "Usage: `basename {VIEW_BODY}` {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) после перезапуска системы.