Как заставить работать /etc/rc.local

Всех приветствую уважаемые форумчане.

Несколько дней мучаюсь с /etc/rc.local и никак не могу заставить его работать.

Для работы СПС Консультант Плюс в среде LINUX (Kubuntu 11.10) нужно запустить всего один бинарник - некий модуль conslin (типа драйвера какого-то что-ли).

Как я это делал: я взял этот бинарный файл conslin скопировал в /usr/bin/, присвоил ему права и группу root, владельцем тоже сделал root, сделал его исполняемым командой

sudo chmod a+x /usr/bin/conslin

Затем, если в терминале набрать

sudo /usr/bin/conslin

то этот бинарник запускается, появляется в запущенных службах и Консультант Плюс успешно запускается. Без этого модуля Консультант Плюс не запускается вообще. Таким образом, моя задача - автоматизировать запуск этого бинарника каждый раз при загрузке системы и без моей помощи.

Есть официальный мануальчик от разработчика Консультант Плюс о том, как это сделать в LINUX системах. Согласно этому мануалу, для того, чтобы модуль conslin автоматически стартовал при загрузке системы, в конец файла etc/rc.local необходимо добавить строку: /usr/local/bin/сonslin. Для его активации в ОС Ubuntu необходимо однократно от имени суперпользователя выполнить команду (на нашем языке сделать его исполняемым)

sudo chmod a+x /etc/rc.local

Я сделал как указано выше, только файл conslin я положил не в /usr/local/bin/, а в /usr/bin/ (так как у нас в папке /usr/local/ нет папки /bin, а все системные бинарники находятся в папке /usr/bin) и, сответственно, указал в файле /etc/rc.local команду /usr/bin/сonslin, однако после перезагрузки модуль оказывается незагруженным.

Для разбора полетов попробовал выполнить этот скрипт /etc/rc.local, содержащий в себе команду /usr/bin/сonslin принудительно, чтобы понять - это не запускается (не обрабатывается) сам скрипт /etc/rc.local или же в нем указана неправильная команда. Запустил скрипт так:

sudo /etc/init.d/rc.local start
/etc/rc.local: 14: /usr/bin/сonslin: not found

на что он как видите ругается, что команда не найдена. Пока единственная версия - что неправильно указана команда.

Поскольку все в названном скрипте /etc/rc.local по умолчанию выполняется от имени root, я решил попробовать написать в файле /etc/rc.local не /usr/bin/сonslin, а просто сonslin, т.к. если в терминале сделать так:

sudo su
# /usr/bin/сonslin
bash: /usr/bin/сonslin: Нет такого файла или каталога

то как мы видим, он ответит, что нет такого файла (а он есть - как тот суслик), а если сделать так

sudo su
# сonslin
bind: Address already in use

то бинарник запускается. То есть, при выполнении команды от имени root не через sudo а от самой учетки root (#) указывать путь к бинарнику не нужно, так как он итак ищется в папке /usr/bin/. Если запускать бинарник через sudo, то разницы нет - указывать к нему путь или нет.

Но и с командой conslin в скрипте /etc/rc.local это скрипт также не выполняется. Также пробовал указывать в нем и "sudo /usr/bin/conslin" и "sudo conslin" - но он не хочет работать, вот что пишет в таких случаях:

sudo /etc/init.d/rc.local start
sudo: /usr/bin/сonslin: command not found

sudo /etc/init.d/rc.local start
sudo: сonslin: command not found

Куда уже копать дальше я не знаю - но бинарник не запускается при старте системы и все тут. Может быть нужно как-то разрешить обработку этого самого скрипта /etc/rc.local в /etc/init.d/rc.local?

Помогайте пожалуйста.

0
Vlad_W_1999 - 13 Февраль, 2012 - 10:13

Где лежит файл по имени сonslin? Если в /usr/local/bin, тогда надо писать /usr/local/bin/сonslin. Если в /usr/bin/, тогда нужно писать /usr/bin/сonslin. Писать в файл /etc/init.d/rc.local

Или я чего-то не понял?

0
Dimooon85 - 13 Февраль, 2012 - 19:25

Файл conslin лежит в /usr/bin. Почему надо писать в /etc/init.d/rc.local? Ведь этот скрипт запускает скрипт /etc/rc.local а не непосредственно обрабатывает команды, то есть нужная команда должна быть прописана в /etc/rc.local. Ну так ведь?

0
Dimooon85 - 13 Февраль, 2012 - 21:56

Ни с того, ни с сего но скрипт у меня начал работать, подозреваю, что причина в том, что я делал скрипт и бинарник исполняемыми с помощью команды

sudo chmod a+x /etc/rc.local
sudo chmod a+x /usr/bin/conslin

как велел Консультант Плюс, при таком варианте скрипт вел себя так, как было указано выше - он попросту не запускался, а тут я взял грех на душу (обещаю так больше не делать), в терминале ввел

sudo dolphin

открыл папку со скриптом, правой кнопкой по нему щелкнул и в свойствах поубирал все биты, осталась только галка "сделать файл исполняемым", то же самое проделал и с файлом conslin, что аналогично команде

sudo chmod +x /usr/bin/conslin

то есть без буквы "а" как в версии команды по мануалу Консультант.

Просто мне было непонятно, если выполнить поверх предыдущей команды такую же но без буквы "а" - уберутся ли все биты или нет, поэтому я сделал это наглядно для себя через dolphin. Больше ничего не делал и машину даже до этого не перезагружал - но скрипт начал пускаться вручную и после перезагрузки он тоже благополучно запустился. В чем была причина? Думаю именно в неправильной команде на изменение атрибута файла, когда я делал его исполняемым.

0
knuckles - 14 Февраль, 2012 - 14:43

Хорошо, что все хорошо кончается)) Маленький совет: кдешные приложения лучше через kdesudo запускать.

0
DarkneSS - 14 Февраль, 2012 - 17:24
Изображение пользователя DarkneSS.

И вообще гуёвые. Не то, чтобы мы придирались, просто необъяснимым образом запуск с судо иногда отваливается...

0
lord_i - 13 Февраль, 2012 - 22:24
Изображение пользователя lord_i.

Попробуйте убрать "sudo" из /etc/rc.local Помоему оно там лишнее...

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры