LINUX.ORG.RU
решено ФорумAdmin

правильный скрипт на bash для работы по типу демона для взвода таймера ipmi, каким он должен быть?

 , ,


0

2

Нет уверенности в стабильной работе crond, поэтому нужен скрипт-демон
Стандартно как бы можно сделать в скрипте бесконечный цикл, внутри sleep (60) и далее выполнять команду взвода таймера перезапуска ipmi модуля сервера, для того чтобы отложить перезапуск сервера.
Какие могут быть подводные камни и что нужно предусмотреть в скрипте?
Если есть готовый пример скрипта, буду признателен.

★★★

Почему нет уверенности в crond? Обычно подобное делают, если нужен запуск/проверка чего-то чаще 1 раза в минуту. В самом скрипте нет ничего сложно, главное при запуске перенаправить stdout и stderr в /dev/null и /dev/zero в stdin.

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

после чего это происходило - не выяснили?

vaddd ★☆ ()
Ответ на: комментарий от Vlad-76

Есть у меня случаи когда crond переставал скрипты запускать. Помогал его рестарт.

У меня по полгода аптайм, ни разу не было, чтобы за это время хоть раз не отработала хоть одна задача в cron. Проблема в твоём crontab, ищи, исправляй.

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

Крон будет работать стабильнее, чем демон на баше, инфа 100%

Умножаю данного кота.

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

Аналогично, ниразу не видел что бы крон перестал работать, и utime может быть куда как больше.

anc ★★★★★ ()
Ответ на: комментарий от Vlad-76

Есть у меня случаи когда crond переставал скрипты запускать. Помогал его рестарт.

У меня с 2016 сервер шлёт сообщения, ни одного глюка cron'а. Проблема явно у вас.

IPR ★★★★★ ()

аптайм 4+ года(сервер не один), проблем с кроном нет, в отличии от :)

+оповещения от крона на мыло поможет узнать, есть ли проблема.

А так в первом сообщении уже сказали за перенаправление.

PunkoIvan ★★★★ ()
Последнее исправление: PunkoIvan (всего исправлений: 1 )
Ответ на: комментарий от IPR

Каждый же на свой опыт ориентируется. Не исключаю вариант что в этот раз я не нарвусь на глюки crond. Но скрипт-демон запущу 100%.

Vlad-76 ★★★ ()

Да не слушайте вы их! Понаписали тут всякую лажу... cron предназначен для запуска программ, которые сами не умеют работать со временем и не желающие становиться демонами.

Если вам надо программу, которая должна загружаться при старте системы и перегружать систему если всё повисло, то есть выключая автоматическую перезагрузку руками вовремя чтобы оно не произошло, следя за временем самостоятельно, то cron тут лишнее и будет создавать свои глюки, например он запускает не «ЧЕРЕЗ» N минут, а «В» минут.

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

Если вам надо программу, которая должна загружаться при старте системы и перегружать систему если всё повисло, то есть выключая автоматическую перезагрузку руками вовремя чтобы оно не произошло, следя за временем самостоятельно, то cron тут лишнее

У меня именно для таких целей используется cron и пока не подводил. Аргумент для крона один и его вполне достаточно, чтобы применять его - он уже качественно встроен в систему и вероятность ляпов при редактировании кронтаба намного меньше, чем при демонизации своих поделий. Особенно если время жалко, а надежность хочется повыше.

например он запускает не «ЧЕРЕЗ» N минут, а «В» минут.

а когда он разучился запускать «через»? )

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

У меня именно для таких целей используется cron и пока не подводил.

Это классическое применение инструмента не по назначению по причине неумения ничем пользоваться. У меня нет причин себе не доверять и сомневаться в людях, писать своего демона не так уж сложно, это не винда, где как-будто специально сделано сложно для программы-сервиса.

а когда он разучился запускать «через»?

Всегда. Если вы намекаете на «каждые пять минут», то это просто короткая запись запускать в 00, 05, 10 ... 55 минут, но никак не «через 5 минут от текущего времени».

vodz ★★★★★ ()
Последнее исправление: vodz (всего исправлений: 1 )
Ответ на: комментарий от vodz

Это классическое применение инструмента не по назначению по причине неумения ничем пользоваться. У меня нет причин себе не доверять и сомневаться в людях, писать своего демона не так уж сложно, это не винда, где как-будто специально сделано сложно для программы-сервиса.

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

Если вы намекаете на «каждые пять минут», то это просто короткая запись запускать в 00, 05, 10 ... 55 минут, но никак не «через 5 минут от текущего времени».

Для 99,9% задач такого вочдога вполне достаточно. Там, где дозарезу обязательно вести отсчет строго с момента запуска - линукс обычно не используют )

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

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

Запускать «через» означает не микросекундой позже, а от момента завершения предыдущей работы. И тут cron ничем не поможет. Для вочдога это скорее всего выльется в 59 секунд. То есть на секунду меньше в каждую минуту. Решите это на cron-е.

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

Запускать «через» означает не микросекундой позже, а от момента завершения предыдущей работы. И тут cron ничем не поможет. Для вочдога это скорее всего выльется в 59 секунд. То есть на секунду меньше в каждую минуту. Решите это на cron-е.

Я это не буду решать на кроне ) Потому что как я упомянул, для вочдогов вообще не принципиально время, и выбор даже между одной минутой и двумя минутами не важен в подавляющем большинстве случаев, что уж тут говорить про 59с - 1мин )

В общем, у вас подход перфекциониста, а у меня подход практика ) Давайте на этом остановимся, потому что это разные плоскости )

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

писать своего демона не так уж сложно

Немного отходя от конкретной задачи ТС. Сферически и в вакуме - да. Но давайте рассмотрим вариант близкий к варианту ТС. Есть куча кода который исполняется в цикле с sleep(60), т.е. выполнили код, заснули на минуту, опять выполнили... В коде могут быть баги которые при определенных обстоятельствах вызовут крэш демона. Получается для стабильной работы надо еще и следить за тем что демон жив и в случае падения перезапускать его. Не слишком ли усложненная схема получается только из-за одного sleep(60), когда тоже самое можно запихнуть в крон?

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

Да что же это такое. С вашим и vaddd подходом получается, что программки способны писать считанные небожители, желательно не в РФ. Вы видели код watchdog-а? Вот мой в busybox:

static int fd;

static void watchdog_shutdown(int ATTRIBUTE_UNUSED unused)
{
        write(fd, "V", 1);      /* Magic, see watchdog-api.txt in kernel */
        _exit(0);
}

int watchdog_main(void)
{
        /* Userspace timer duration, in seconds */
        long td = 30;
        unsigned int timer_duration;

        /* We're only interested in the watchdog device .. */
        bb_xgetopt_ulflags("t:\0:t:-1", &td);
        timer_duration = td;

        xdaemon(XDAEMON_PIDFILE);

        bb_signal( (1 << SIGINT) | (1 << SIGHUP), watchdog_shutdown);

        fd = bb_xopen(*Gargv, O_WRONLY | BB_OPEN_ERR | BB_OPEN_CREAT_0777);

        while (1) {
                /*
                 * Make sure we clear the counter before sleeping, as the counter value
                 * is undefined at this point -- PFM
                 */
                write(fd, "\0", 1);
                sleep(timer_duration);
        }

        watchdog_shutdown(0);

        return EXIT_SUCCESS;
}
Ну что тут сложного?!

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

В коде могут быть баги которые при определенных обстоятельствах вызовут крэш демона. Получается для стабильной работы надо еще и следить за тем что демон жив и в случае падения перезапускать его. Не слишком ли усложненная схема получается только из-за одного sleep

Руками и ногами за. А умудриться убить кронд можно только явным злым умыслом.

С вашим и vaddd подходом получается, что программки способны писать считанные небожители, желательно не в РФ

Вопрос ведь не в том, способны или не способны. Вопрос в том, что так совершенно не нужно )

Ну что тут сложного?!

И этим предлагается заменить одну строчку в кронтабе? )

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

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

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