Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Странности с автозапуском демонов  (Прочитано 1520 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн vitorg

  • Автор темы
  • Участник
  • *
  • Сообщений: 165
    • Просмотр профиля
Странности с автозапуском демонов
« : 10 Февраля 2009, 22:46:30 »
Заметил кучу глюков в приложении, запускаемом демоном при загрузке системы (режимы 2,3,4,5), начал копать и оказалось, что окружение в котором стартовал демон какое-то сильно странное, например кодировка не UTF-8, а ANSI_X3.4-1968, локаль не ru_RU, а en_EN, хотя во всей системе глобально эти переменные прописаны правильно.
Запускаю демон руками:
sudo -i
/etc/init.d/daemon
всё впорядке, окружение правильное, но при автозагрузке ерунда какая-то :(
Заметил, что дело не в конкретном демоне, а так со всеми которые запускаются при старте системы, в частности ни один из них не видит переменные, прописанные в /etc/profile если запускается автоматически при загрузке, но если запускать руками из под рута, то всё отлично.

В чём может быть дело и как чинить?

PS: Debian Etch и Ubuntu 8.04
« Последнее редактирование: 12 Февраля 2009, 23:34:03 от vitorg »
Ноутбук Panasonic CF-Y7 + Ubuntu 9.04

Оффлайн vitorg

  • Автор темы
  • Участник
  • *
  • Сообщений: 165
    • Просмотр профиля
Re: Странности с автозапуском демонов
« Ответ #1 : 12 Февраля 2009, 23:33:36 »
UP
Неужели никто на этом форуме не писал демонов?
Ноутбук Panasonic CF-Y7 + Ubuntu 9.04

Оффлайн unimix

  • Активист
  • *
  • Сообщений: 537
    • Просмотр профиля
Re: Странности с автозапуском демонов
« Ответ #2 : 14 Февраля 2009, 21:55:37 »
Заметил кучу глюков в приложении, запускаемом демоном при загрузке системы (режимы 2,3,4,5), начал копать и оказалось, что окружение в котором стартовал демон какое-то сильно странное, например кодировка не UTF-8, а ANSI_X3.4-1968, локаль не ru_RU, а en_EN, хотя во всей системе глобально эти переменные прописаны правильно.

Скорее всего в переменных окружения от родительского процесса не содержится LANG.

Запускаю демон руками:
sudo -i
/etc/init.d/daemon
всё впорядке, окружение правильное, но при автозагрузке ерунда какая-то :(

Ну shell содержит в переменных окружения LANG. Так что здесь и будет все нормально.


Заметил, что дело не в конкретном демоне, а так со всеми которые запускаются при старте системы, в частности ни один из них не видит переменные, прописанные в /etc/profile если запускается автоматически при загрузке, но если запускать руками из под рута, то всё отлично.

/etc/profile - файл профилей для shell-а. Мог бы прочитать в самом файле.

Оффлайн vitorg

  • Автор темы
  • Участник
  • *
  • Сообщений: 165
    • Просмотр профиля
Re: Странности с автозапуском демонов
« Ответ #3 : 14 Февраля 2009, 22:05:43 »
Я читал в самом файле и знаю, что это для шелла, просто думал, что шелл и запускает демонов... Вообще их запускает некий процесс с ID=1, а именно init.
И как быть в данном случае? Как сделать так, чтобы демон стартовал с окружением shell'а root'а?
Ноутбук Panasonic CF-Y7 + Ubuntu 9.04

Оффлайн unimix

  • Активист
  • *
  • Сообщений: 537
    • Просмотр профиля
Re: Странности с автозапуском демонов
« Ответ #4 : 15 Февраля 2009, 00:51:15 »
Вообще их запускает некий процесс с ID=1, а именно init.

Так оно и должно быть -- с него все начинается. :)

Для LANG можно дописать в скрипт демона следующее (взято из "/etc/init.d/cron"):

parse_environment ()
{
    ENV_FILE="none"
    [ -r /etc/environment ] && ENV_FILE="/etc/environment"
    [ -r /etc/default/locale ] && ENV_FILE="/etc/default/locale"
    [ $ENV_FILE = none ] && return

    value=$(egrep "^[^#]*${var}=" $ENV_FILE | tail -n1 | cut -d= -f2)
    eval $var=$value
}


# Parse the system's environment
parse_environment
export LANG
« Последнее редактирование: 15 Февраля 2009, 00:54:03 от unimix »

Оффлайн vitorg

  • Автор темы
  • Участник
  • *
  • Сообщений: 165
    • Просмотр профиля
Re: Странности с автозапуском демонов
« Ответ #5 : 15 Февраля 2009, 01:01:46 »
LANG я привёл просто в качестве примера, на самом деле мне важно, чтобы окружение в котором автозапускается демон было точно таким же какое я получу выполнив в консоли "sudo -i". Естественно, экспортировать каждую переменную в скрипте не хочется, да и не правильно это - менять чужой скрипт запуска демона (в моём случае tomcat), есть ли более человеческий способ?
Ноутбук Panasonic CF-Y7 + Ubuntu 9.04

Оффлайн unimix

  • Активист
  • *
  • Сообщений: 537
    • Просмотр профиля
Re: Странности с автозапуском демонов
« Ответ #6 : 15 Февраля 2009, 01:35:07 »
LANG я привёл просто в качестве примера, на самом деле мне важно, чтобы окружение в котором автозапускается демон было точно таким же какое я получу выполнив в консоли "sudo -i".

Тебе нужны переменные окружения терминала или гнома?  ???

Оффлайн vitorg

  • Автор темы
  • Участник
  • *
  • Сообщений: 165
    • Просмотр профиля
Re: Странности с автозапуском демонов
« Ответ #7 : 15 Февраля 2009, 01:49:11 »
Тебе нужны переменные окружения терминала или гнома?  ???
Гнома или какого-то другого WM у меня нет. Мне нужны все переменные окружения :) В идеале хочется достичь того, чтобы запуск демона руками был полностью эквивалентен автозапуску процессом init.

В частности, мне надо, не меняя скрипты запуска демонов, задать переменную окружения JAVA_HOME так, чтобы её видели все демоны как при автозапуске процессом init так и при ручном запуске.
Ноутбук Panasonic CF-Y7 + Ubuntu 9.04

 

Страница сгенерирована за 0.018 секунд. Запросов: 22.