LINUX.ORG.RU

Как сделать такое

 


0

1

Есть скрипт, он выполняется каждые 6 минут ежедневно. */6 * * * * One.pl Его останавливает скрипт через 5 минут ежедневно. */11 * * * * kill_One.pl

Есть второй скрипт, он запускается 1 раз в день в 01:00 0 01 * * * Two.pl Его останавливает скрипт через 10 минут раз в день 01:10 10 01 * * * kill_Two.pl

Теперь суть, мне нужно что бы когда работал скрипт Two (1 раз 10 минут в час ночи),не запускался скрипт One (который каждые 5 мину грузится).

Я не продвинутый юзер в администратировании, надеюсь будет несложно осуществить это.



Последнее исправление: reddim (всего исправлений: 1)

поставь в первом скрипте проверку на запущенность второго

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

Это всё будет удовлетворять моим условиям и заменит все мои строки? Т.е это готовое решение?

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

не понимаю почему два раза подряд идет One.pl

*/6 0,2-23 * * * One.pl

11-59/6 1 * * * One.pl

Не понимаю как их или (его?) теперь убивать, что прописывать...

reddim
() автор топика

Прямо эпициклы какие-то. А ты в курсе, что все эти скрипты должны вращаться вокруг одного lock-файла?

one.pl создаёт при запуске. А если уже есть, то тут же завершается. В конце удаляет.

two.pl убивает one.pl и создаёт файл. После завершения удаляет.

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

мне кажется ты напутал, получается one.pl целый час не будет работать?

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

Первая строчка запускает раз в 6 минут все время, кроме часа ночи. Вторая запускает в час ночи с 11 до 59 минут.

goingUp ★★★★★
()

Между прочим, */11 - это не «через 5 минут», это каждую одиннадцатую минуту. То есть в 0, 11, 22, 33, 55 минут. Я так понял, тут нужно было «5-59/6».

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

первый запускается */6 * * * * второй его останавливает */11 * * * * И получается что скрипт первый работал 5 минут или нет?

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

ну, вообще да. Запись */5 * * * * следует понимать как «каждую минуту проверить остаток от деления числа минут на 5, и если он 0, запустить команду». Остаток от деления 0 на 5, очевидно, равен 0. Точно то же означает запись */11 * * * *. Это не «каждые 6 минут после первых 5 минут часа», очевидно: тут вообще нет числа 6.

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

Не совсем. Оба скрипта (One и kill_One) будут запущены в 0 минут. Второй запуск скрипта One произойдет в 6 минут, через 5 минут после этого его прибьет kill_One. Третий запуск скрипта произойдет в 12 минут, четвертый - в 18. Потом 4 минуты они будут работать вдвоем, а в 22 минуты запустится скрипт kill_One и т. д.

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

Руками запускать второй скрипт? У меня уже мозги раком стоят, кто сможет реализовать это в кроне или на перле демон напишет рабочий, и сколько это будет стоить

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

Да причём тут руками? Из первого в самом начале, через at делаешь запуск через 5 минут второго.

ziemin ★★
()

Какие-то неоправданные усложнения.
В первом скрипте допиши автозавершение по нужному условию. Это избавит от необходимости запуска отдельного скрипта-убийцы.

Во втором скрипте добавь проверку, не запущен ли первый скрипт. Также добавь во второй скрипт самоубийство по условию.

В итоге у тебя в кроне должно остаться две строки - запуск скрипта one и запуск скрипта two.

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

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

Ладно хрен с этим скриптом 10 минутным вторым, хотя бы сделать бы что бы первый выполнялся 5 минут и умирал..

Мне вот говорят запуск через at какой-то, что это еще один планировщик? я же говорю я не админ крутой и даже не линуксойд..

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

запустить на 5 минут и отключить, какие критерии?

reddim
() автор топика

Второй создаёт ранфайл, а первый проверяет и если процесс существует, не запускается. Вообще фигня какая-то у тебя. Один запускает, другой убивает...

chg ★★★★★
()

Удивительно, что никто не вспомнил про flock. Но зато сразу спроектировали убогого чмонстра. Это печально.

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

еще одниг гуру больше, закрывайте тему) я после пару сообщений впринципе уже всё понял...

reddim
() автор топика

вопрос к советующим проверку запщенности процесса и создание файлов:
разве это будет 100% гарантией? ведь первый скрипт может запуститья в промежутке времени между проверкой и запуском второго скрипта

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

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

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

*/1 * * * * 1.sh

1.sh

while true; do sleep 6m One.pl & sleep 5m killall One.pl done

1)Если я его помещу в крон, то какое мне время выполнения этого скрипта ставить? Каждую минуту? Повторно запускаться не будет? ведь в целом он 11 минут работать будет. (т.е крон 11 раз запустит?).

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 2)Как бы второй скрипт реализовать тоже, который бы запускался раз в день на десять минут.

*/1 * * * * 2.sh

2.sh while true; do sleep 1380m --- 23 часа Two.pl & sleep 10m killall Two.pl done

3) По поводу того что бы они вообще не могли вместе работать

Мне тут такое подсказали * * * * * if [ -e /etc/passwd ]; then head -1 /etc/passwd > /tmp/file.txt; fi Может кто подсказать конкретно, как он не будет давать запускаться одновременно.

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

1)Если я его помещу в крон

Вопрос: а зачем тогда нужен cron? В таком виде скрипт сам будет работать как ему надо, т. е. через 6 минут запустит One, через 5 минут прибьет, и так пока его кто-то сигналом не пристукнет.

2. Как бы второй скрипт реализовать

А чем это отличается от первого случая, кроме времени? Ну поставь sleep на 10 минут. Крон также не нужен в этом случае.

Мне тут такое подсказали

Тут и не такое подскажут (программа из одной строчки ни Perl), советую не верить никому и все-таки читать руководства. Подсказка: не /etc/passwd, а /etc/shadow, пароли пользователей лежат там.

Kiborg ★★★
()

добавь в скрипт One проверку того, работает ли скрипт Two.

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

ЯННП. Какое переключение?

переключение контекста, или как это называется? когда отведённое процессу время кончается, и планировщик переключает на другой процесс

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

или как это называется?

Рекомендую подтянуть матчасть.

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