Официальный форум СВД Встраиваемые Системы
03 Декабря, 2016, 05:25:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Автостарт в QNX 4.25  (Прочитано 2109 раз)
brisk
Пользователь

Сообщений: 33


WWW
« : 01 Февраля, 2010, 17:29:33 »

Нужно запустить скрипт настройки TCP/IP при старте системы (без запуска фотона).
При запуске из .profile все отлично, но для меня этот вариант не подходит, так как при каждом удаленном
входе в систему через (ph)ditto он пускается снова.
Пробовал пускать в sysinit.node, но при запуске не находятся route и netstat.

Есть ли еще какие-нибудь варианты автозапуска без использования образа .boot?
Записан

ООО НПП "Автоматика-С"
Олег Большаков
Администратор
Житель форума

Сообщений: 2929



WWW
« Ответ #1 : 01 Февраля, 2010, 20:32:30 »

При вызове внешних команд из скриптов рекомендуется указывать полный путь к команде. Попробуйте вызывать route и netstat из sysinit'а следующим образом:

Код:
/usr/ucb/route

и

Код:
/usr/ucb/netstat

В Вашем случае проблема, скорее всего, в том, что переменная окружения PATH ещё не настроена должным образом, т.к. происходит это после входа пользователя в систему (на основании файла /etc/profile). Вы также можете задать переменную PATH перед вызовом скрипта, добавив необходимые пути, например:

Код:
PATH=$PATH:/usr/ucb <имя_скрипта>
Записан

brisk
Пользователь

Сообщений: 33


WWW
« Ответ #2 : 02 Февраля, 2010, 12:33:52 »

проблема, скорее всего, в том, что переменная окружения PATH ещё не настроена должным образом

Да, я так и понял. Если прописать везде путь, проблем нет.
Меня интересует можно ли запустить скрипт один раз для всех пользователей с уже проинициализированными переменными окружения?
Кроме как из profile проверять состояние глобальной переменной, и если скрипт уже запущен - то не пускать, в голову больше ничего не приходит.
Записан

ООО НПП "Автоматика-С"
Олег Большаков
Администратор
Житель форума

Сообщений: 2929



WWW
« Ответ #3 : 02 Февраля, 2010, 14:14:15 »

Мне стало не совсем понятно, что Вы хотите сделать. На всякий случай, уточню некоторые моменты:

1. Для запуска программы (скрипта) один раз при загрузке системы надо использовать скрипт /etc/sysinit .
2. Для запуска программы (скрипта) для каждого пользователя каждый раз при входе в систему надо использовать файл /etc/profile .
3. Для запуска программы (скрипта) для конкретного пользователя каждый раз при входе в систему надо использовать файл .profile в домашнем каталоге пользователя.

Правильно ли я Вас понял, что Вас интересует первый вариант -- запуск скрипта при старте системы? Или Вам нужен запуск скрипта при входе пользователей в систему, но только один раз после старта системы? Уточните, пожалуйста.

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

Код:
PATH=$PATH:/usr/ucb <имя_скрипта>

Во втором случае, может понадобиться разработка специального ПО.
Записан

brisk
Пользователь

Сообщений: 33


WWW
« Ответ #4 : 02 Февраля, 2010, 15:22:22 »

Вариант:
запуск скрипта при входе пользователей в систему, но только один раз после старта системы

т.е. запуск скрипта один раз после входа первого пользователя.

а если сделать вот так:
из profile проверять состояние глобальной переменной, и если скрипт уже запущен - то не пускать
?
Записан

ООО НПП "Автоматика-С"
Олег Большаков
Администратор
Житель форума

Сообщений: 2929



WWW
« Ответ #5 : 02 Февраля, 2010, 16:15:20 »

На счёт глобальной переменной я не уверен, мне кажется, что это в общем случае не получится. Могу предложить следующий вариант. В /etc/sysinit добавьте строку:

Код:
rm -f /tmp/start-once

В конец файла /etc/profile добавьте:

Код:
if [ ! -f /tmp/start-once ]; then
    echo `id` `date` >> /tmp/start-once
    <необходимые действия>
fi

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

Принцип тут простой. На этапе загрузки системы (во время исполнения скрипта /etc/sysinit) удаляется файл-семафор /tmp/start-once. Т.е. система приводится в исходное состояние. При входе пользователя в систему выполняется файл /etc/profie, в котором проверяется наличие файла /tmp/start-once. При отсутствии файла он создаётся, а также выполняются необходимые действия.
Записан

brisk
Пользователь

Сообщений: 33


WWW
« Ответ #6 : 03 Февраля, 2010, 11:16:20 »

For Олег Большаков

Идея с файлом понятна, спасибо за помощь!
Записан

ООО НПП "Автоматика-С"
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP © 2002-2016 СВД Встраиваемые Системы.
При использовании материалов сайта ссылка на forum.kpda.ru обязательна.

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines | © Aiwan. Kolobok smiles | Sitemap
Valid XHTML 1.0! Valid CSS!
Сайт СВД ВС

В последний раз google посещал эту страницу 02 Декабря, 2016, 12:31:19