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