The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Чудеса автозапуска, логическая задачка."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"Чудеса автозапуска, логическая задачка."  
Сообщение от Drewter email on 17-Апр-08, 19:02 
Ситуация такая: существует SHEll скрипт(назовем его А), который надо запускать каждые 30 секунд.
Но т.к. в кроне я не увидел возможности настроить интервал  меньше минуты - пришлось запускать каждую минуту.
Но появилась проблема: время исполнения самого скрипта А иногда превышает интервал запуска, поэтому скрипт А не успевает доделать свою работу, что для меня не приемлемо.
Тогда я решил сделать так: скрипт А из крона убрать, но создать еще 1 скрипт Б, который будет запускаться с интервалом в минуту и проверять - если скрипт А все еще запущен, то ничеого не делать, а если скрипт А не запущен, то запускать его.

В связи с этим несколько вопросов(все скрипты на SHEll):

1) Можно ли сделать так, чтобы скрипт висел в памяти вечно и повторял заданный цикл через определенный промежуток времени? Если да, то как и какие команды использовать?

2) Можно ли в кроне задать интервал в несколько секунд? Если да, то как?

3) Как сделать так, чтобы скрипт Б проверял закончил ли работу скрипт А? Какие команды, чтоб определить работет ли скрипт или уже нет?

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Чудеса автозапуска, логическая задачка."  
Сообщение от allez (ok) on 17-Апр-08, 20:41 
>1) Можно ли сделать так, чтобы скрипт висел в памяти вечно и
>повторял заданный цикл через определенный промежуток времени? Если да, то как
>и какие команды использовать?

Можно организовать цикл, используя пустой оператор ":" или "true":


while : ; # или while true;
do
. . .     #
. . .     # Тело цикла
. . .     #
sleep 30  # Пауза
done

>2) Можно ли в кроне задать интервал в несколько секунд? Если да,
>то как?

Увы, это невозможно. минимальный квант времени для cron - минута.

>3) Как сделать так, чтобы скрипт Б проверял закончил ли работу скрипт
>А? Какие команды, чтоб определить работет ли скрипт или уже нет?
>

Можно воспользоваться командой "ps", а лучше будет скомбинировать ее с
обработкой lock-файлов, которые бы создавал скрипт.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Чудеса автозапуска, логическая задачка."  
Сообщение от Drewter email on 18-Апр-08, 07:40 
Спасибо. Цикл сделал.
Когда я запускаю его в фоновом режиме 'sh script.sh &' все работает - он висит в памяти бесконечно.
Но если я выхожу из терминала он перестает работать.
Как сделать та , чтобы скрипт не завершался при выходе из терминала?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Чудеса автозапуска, логическая задачка."  
Сообщение от allez (ok) on 18-Апр-08, 07:55 
>Спасибо. Цикл сделал.
>Когда я запускаю его в фоновом режиме 'sh script.sh &' все работает
>- он висит в памяти бесконечно.
>Но если я выхожу из терминала он перестает работать.
>Как сделать та , чтобы скрипт не завершался при выходе из терминала?
>

Тут вам, однако, "man nohup" почитать надо будет.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "автозапуска"  
Сообщение от Andrey Mitrofanov on 18-Апр-08, 10:01 
>В связи с этим несколько вопросов(все скрипты на SHEll):
>1) Можно ли сделать так, чтобы скрипт висел в памяти вечно и
>повторял заданный цикл через определенный промежуток времени? Если да, то как
>и какие команды использовать?

А поизучать скрипты, запускающие _все_ сервисы при запуске системы? Они обычно как раз на шеле...(1>)

+>Когда я запускаю его в фоновом режиме 'sh script.sh &' все работает - он висит в памяти бесконечно.
+>Но если я выхожу из терминала он перестает работать.

https://www.opennet.ru/openforum/vsluhforumID15/1862.html

>3) Как сделать так, чтобы скрипт Б проверял закончил ли работу скрипт
>А? Какие команды, чтоб определить работет ли скрипт или уже нет?

https://www.opennet.ru/openforum/vsluhforumID9/7156.html
Для тех же (>1) скриптов в /etc/init.d/ в дистрибутиве обычно есть какие-то утилиты создающие-проверяющие pid-файл или что-то подобное...
https://www.opennet.ru/openforum/vsluhforumID3/39159.html#11

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Чудеса автозапуска, логическая задачка."  
Сообщение от sokoloff (ok) on 24-Апр-08, 12:08 
>Тогда я решил сделать так: скрипт А из крона убрать, но создать
>еще 1 скрипт Б, который будет запускаться с интервалом в минуту
>и проверять - если скрипт А все еще запущен, то ничеого
>не делать, а если скрипт А не запущен, то запускать его.

А зачем Вам скрипт Б если не используете крон? Сделайте в скрипте А цикл, внутри которого и делайте полезную работу, а по завершении работы sleep на 30 секунд. Демонизируйте ваш скрипт.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру