LINUX.ORG.RU

Проблема с автозагрузкой скрипта


0

0

Ситема CentOS 5.3 Установка дефолтная на софт RAID 1

Есть скрипт, упрощенный вариант которого выглядит так:

#!/bin/sh

While (true); do sleep 4

if mdadm -D /dev/md0 | grep -q 'State : clean' #проверяю состояние RAID

sleep 180 # Пауза 180 сек если все хорошо

else

echo -e '\a' > /dev/console #Начинаю пипкать сист. динамиком

sleep 1.0; echo -e '\a' > /dev/console

sleep 1.0; echo -e '\a' > /dev/console

xmessage -timeout 15 "Warning" # вывожу сообщение на экран в Иксах

fi

done # Собственно конец. А так цикл бесконечный

========================================================

Сам скрипт положил в /etc/rc.d/init.d/

а в файле /etc/rc.d/rc.local добавил стрку:

/etc/rc.d/init.d/myscript.sh & # строка запуска скрипта

Тут все понятно, я хочу чтобы он запускался автоматически с системой,
запускался в фоне, ну и выполнял проверку состояния soft RAIDa.

Вопрос: 1)Верно ли я организовал автозагрузку этого скрипта для
данного типа дистрибутива (Согласно канонам)? Или как правильнее его
загружать для всех пользователей Х?

2)Почему у меня xmessage и системный динамик при тестировании в Х работает, (если я сам запускаю скрипт), а если я перезагружаю систему - то системный динамик пищит как и положено, а xmessage не выводится?
Как поправить? Само собой я сообщения жду в иксах. Буду рад любой идее..

PS. Не могу тут отформатировать скрипт в человеческий вид. у ЛОРа проблема с отступом в начале строки?


rc.local выполняется до запуска иксов. Так что непонятно куда должно выводиться xmessage.

И даже если предположить, что иксы запущены, то xmessage всёравно не знает к каким иксам подключаться. Используй echo, а лучше пиши в log-файл - так будет правильней.

golodranez ★★★★
()
Ответ на: комментарий от golodranez

В общем-то мне xmessage все равно нужен. Я хочу не сам проверять логи, а что бы юзер такой машины (их достаточно много) сам пришел ко мне и сказал "Компьютер того, пищит и пишет чтобы я шел к тебе, пока данные не потерялись совсем"

dromer
() автор топика
Ответ на: комментарий от dromer

>В общем-то мне xmessage все равно нужен.

А не проще написать нормальный init-скрипт? По крайней мере не отсоединяй свой скрипт от терминала и в случае ошибки выведи сообщение в терминал и паузой до нажатия клавиши. Вот юзеры к тебе и побегут.

golodranez ★★★★
()
Ответ на: комментарий от golodranez

В принципе уже склоняюсь к тому чтобы выводить сообщение в терминале, но графический xmessage он с красным цветом, большими буквами, да и юзер может в это время сидеть не в терминале а в "однокласниках" Может кто кинет ссылку (книгу) про автозагрузку посерьёзней, можно и на английском. А то форумы и гугл слабые помощники. Как ни странно. Рыл 2 дня :(

dromer
() автор топика
Ответ на: комментарий от dromer

Добавь в автозагрузку иксов скрипт, который ищет нужный файл, и если находит - выводит его в xmessage. А скрипт, тестирующий рейд, при необходимости этот файл создает.

Таки да, из консоли _никак_ нельзя подключиться к иксам.

nnz ★★★★
()
Ответ на: комментарий от nnz

> Таки да, из консоли _никак_ нельзя подключиться к иксам.

Можно, если иксы запущены. Нужно только разрешить иксам принимать подключение без авторизации от посторонних юзеров (самый простой вариант: "xhost +") и установить переменную DISPLAY.

Deleted
()
Ответ на: комментарий от nnz

> dcop долго висит, а потом пишет, что не может подключиться к сокету. Таки нельзя.

Причём тут dcop?

Deleted
()
Ответ на: комментарий от Deleted

dcop - тестовый слон :)

Таки да, работает (дописал двоеточие перед ноликом в $DISPLAY). Спасибо!

nnz ★★★★
()
Ответ на: комментарий от dromer

>да и юзер может в это время сидеть не в терминале а в "однокласниках"

Это как это? система же только грузиться

golodranez ★★★★
()

ИМХО, тема для раздела Development, но отвечу здесь. Считаю, что скрипт должен запускаться независимо, при старте системы. Скрипт должен быть выполнен по типу "демона", в /etc/rc.d/init.d/ должен лежать не сам скрипт, а стартовый файл, который должен содержать правильную строку "chkconfig:" и понимать опции "start" и "stop". В принципе, сам скрит тоже может быть частью этого файла, но распологать в этом каталоге скрипты , не понимающие "start/stop" идеологически не верно.

Скрипт работает демоном, пишет в log-файл, работает с правами суперпользователя. Если нужен вывод через xmessage, то можно смотреть, есть ли X-овые приложения. Смотрим список процессов с переменными среды (вроде было "ps axfuewww"), если есть процессы с переменной DISPLAY, то перед запуском xmessage делаем экспорт переменной DISPLAY и переменной XAUTHORITY. Последняя переменная должна указывать на файл (см. man xauth), её содержимое берём, либо из вывода команды "ps", либо, если там её нет, делам XAUTHORITY=/USER_HOME/.Xauthority, где USER_HOME --- домашний каталог пользователя --- владельца процесса.

Кроме вывода через xmessage можно добавить вывод через wall, отправку почты и т.д.

P.S. Режим "Preformated texT", но не забывайте сами переносить строки.

mky ★★★★★
()
Ответ на: комментарий от mky

>Скрипт работает демоном

эээ... это где init-скрипты работают в режиме демона? Все скрипты во время загрузки выполняються в терминале последовательно.

golodranez ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.