Использование локальных сценариев запуска

Использование локальных сценариев запуска

Как правило, в системе Linux большинство стандартных серверов запускается либо с помощью сценариев SysV, либо суперсервера. Исключением является сервер X, для запуска которого в файле /etc/inittab предусмотрена соответствующая запись. Сервер X запускается только на конкретном уровне выполнения. В системе Slackware для запуска основных серверов используется /etc/rc.d/rc/inet2. Большинство дистрибутивных пакетов включает локальные сценарии запуска, редактируя которые администратор имеет возможность обеспечить работу дополнительного сервера, запустить специальную утилиту или выполнить другие подобные действия. Локальные сценарии запуска для основных дистрибутивных пакетов Linux приведены в табл. 4.1.

Как правило, локальные сценарии запуска применяются для того, чтобы включить в систему сервер, для которого отсутствуют соответствующие сценарии SysV и который по каким-либо причинам нежелательно запускать посредством суперсервера. Сценарии запуска SysV ориентированы на конкретную версию системы, поэтому для серверов, которые не включены в дистрибутивный пакет, как правило, отсутствуют и сценарии запуска. Например, если вы установите в Mandrake сервер, ориентированный на SuSE, и попытаетесь использовать для его запуска сценарии SysV, которые также предназначены для системы SuSE, сервер не будет работать. Аналогичные проблемы возникают, если автор предоставляет вам исходные коды сервера. Как правило, такие коды не настроены на конкретный дистрибутивный пакет Linux. Сервер может компилироваться без ошибок и надежно работать, но для того, чтобы обеспечить его запуск, вам придется приложить определенные усилия.

При необходимости вы можете сами написать сценарий SysV для запуска сервера. Сделать это можно, модифицируя имеющийся сценарий. Еще проще создать сценарий SysV, имея в распоряжении сценарий, выполняющий аналогичную задачу (такая ситуация может возникнуть, если вы переходите от устаревшей версии сервера к новой или если вы заменяете один из серверов, присутствующих в системе, подобным сервером независимого производителя). Однако при создании сценария SysV все же могут возникнуть проблемы. Формат сценариев запуска SysV, используемый в вашей системе, может быть незнаком для вас (обычно для написания сценариев SysV используется язык оболочки bash). Если вы не хотите тратить время на изучение формата сценариев или языка программирования, вы можете воспользоваться локальными сценариями запуска.

Для внесения изменений в локальный сценарий запуска можно использовать обычный текстовый редактор. В файл надо включить строку, формат которой совпадает с форматом команды, используемой для запуска этого сервера. Например, приведенная ниже строка позволяет запускать Telnet-сервер.

usr/sbin/in.telnetd

По умолчанию сервер запускается в режиме, отличном от режима демона (т.е. он не выполняется в фоновом режиме и может управляться оболочкой). Для того чтобы указать, что сервер должен работать как фоновая программа, надо в конце командной строки указать символ &. Если вы не сделаете этого, то после вызова данного сервера сценарий запуска прекратит работу. Такую ситуацию можно условно считать допустимой в том случае, если строка, запускающая данный сервер, является последней строкой сценария, но в любом случае символ & нельзя забывать.

Сценарий запуска позволяет выполнять более сложные действия, чем запуск сервера посредством одной строки. Например, с помощью условных выражений языка bash можно проверить, существует ли файл сервера, или запустить сервер только при выполнении определенных условий. Подобные действия часто выполняют сценарии запуска SysV.

Необходимо помнить, что локальные сценарии запуска в разных системах могут отличаться друг от друга. Например, в SuSE сценарий boot.local запускается раньше, чем сценарий rc.local системы Red Hat, поэтому локальный сценарий запуска SuSE лучше подходит для выполнения различных действий с интерфейсами и для других задач, которые должны решаться на ранних этапах загрузки системы, а сценарий Red Hat больше пригоден для запуска сервера и других действий, которые должны выполняться тогда, когда основные средства поддержки сетевых функций уже установлены. Если задача, которую вам необходимо решить, редактируя сценарий запуска, существенно зависит от наличия в системе некоторых серверов, вам придется написать сценарий запуска SysV с номером, отражающим порядок его выполнения относительно других сценариев.

В основном локальные сценарии запуска используются для обеспечения загрузки серверов и других программ. Если работа сервера, запущенного посредством сценария SysV, может быть остановлена путем передачи сценарию параметра stop, то для сервера, который был запущен при выполнении локального сценария, подобного способа завершения не существует. Если необходимо прекратить выполнение сервера, вам надо использовать утилиту kill, killall или другие подобные инструменты.