Linux — Порядок запуска служб

Иногда может потребоваться изменить порядок запуска служб в Linux, если некоторые из них оказываются зависимыми от других. Например, в моем случае одна из машин на RHEL 5 была членом домена, и в то же время на ней нужно было использовать VNC-сервер. После выполнения команды chkconfig vncserver onдля его постановки в автозагрузку выяснилось, что по умолчанию VNC-сервер запускается до Samba; таким образом, он не видит пользователей и завершается с ошибкой. Если же запустить его позже вручную, все нормально.

Итак, нужно изменить порядок запуска этих сервисов.

Посмотрим сначала /etc/rc.d/. Здесь есть подкаталоги для разных уровней запуска. Для тех уровней, в которых запускается служба (посмотреть можно через chkconfig --list), в подкаталогах есть символическая ссылка на скрипт запуска/останова. Например, в  /etc/rc.d/rc5.d/в моем случае имеется файл @S91vncserver(то, что начинается с S, относится к запуску, а с K — к останову). Цифра как раз задает порядок запуска.

Идем туда, куда указывает символическая ссылка — в /etc/rc.d/init.d/, искомый файл — vncserver.

#!/bin/bash
#
# chkconfig: - 91 35
# description: Starts and stops vncserver. \
#              used to provide remote X administration services.
...

Нужно отредактировать этот файл. Я заменил 91 на 93 (92 оставим про запас), чтобы служба запускалась позже:

# chkconfig: - 93 35

Теперь такая команда:

chkconfig vncserver on

Посмотрим в подкаталогах, расположенных в /etc/rc.d/@S91vncserverпревратилось в @S93vncserver. Теперь служба запустится после Самбы, что и подтверждает перезагрузка.

  • Vitaly Vichorev

    Блин, вот радость то вручную менять цифры на всех необходимых уровнях. Называется: «я у линукса вместо печатной машинки xD» пробовал sysv-rc-conf на debian, но оно похоже не умеет такого. Дефолтными корявым update-rc.d тоже не хочется. Блин, хоть сам пиши!!!