alibek Опубликовано 1 ноября, 2017 · Жалоба 3 минуты назад, myth сказал: Просто запускать как сервис и все. Да, так можно. Этот сервис будет большую часть времени простаивать, но с периодичностью 1 раз в 19 минут "просыпаться" и выполнять какие-то действия. Но ведь такой сервис уже есть — cron. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
myth Опубликовано 1 ноября, 2017 · Жалоба Но он же не удовлетворяет требованиям тз. Так что можно написать свой костыль. Замкнутый цикл, sleep. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
DDR Опубликовано 1 ноября, 2017 · Жалоба 10 часов назад, myth сказал: Но он же не удовлетворяет требованиям тз. Так что можно написать свой костыль. Замкнутый цикл, sleep. Цикл со sleep по моему худший вариант из предложенных. Придется задачу запускать в бэкграунде для сохранения правильного интервала. Лучший вариант для конкретно этой задачи был предложен Susanin , ниже пример кода на баше #!/bin/bash INTERVAL_MINUTES="19" current_datetime=$(date "+%s") interval_ok=$(( ($current_datetime / 60) % $INTERVAL_MINUTES )) if [ "$interval_ok" = 0 ] then echo "Start at $(date)" >> /tmp/cron-test.log fi Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
YuryD Опубликовано 2 ноября, 2017 · Жалоба 16 часов назад, DDR сказал: Цикл со sleep по моему худший вариант из предложенных. Придется задачу запускать в бэкграунде для сохранения правильного интервала. Лучший вариант для конкретно этой задачи был предложен Susanin , ниже пример кода на баше #!/bin/bash INTERVAL_MINUTES="19" current_datetime=$(date "+%s") interval_ok=$(( ($current_datetime / 60) % $INTERVAL_MINUTES )) if [ "$interval_ok" = 0 ] then echo "Start at $(date)" >> /tmp/cron-test.log fi Чем лучше ? Соблюсти правильный интервал, или узнать - завершилась ли задача взвисшая вдруг, чтобы не плодить копий зависших процессов ? А уж чем чайлд завершился - тут сложно. В бэграунде - ну можно пид проверить, и что-то с процессом сделать, или прямо - ждать код завершения процесса, что при зависшем в бесконечном цикле будет печально. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vop Опубликовано 2 ноября, 2017 · Жалоба 11 минут назад, YuryD сказал: Чем лучше ? Соблюсти правильный интервал, или узнать - завершилась ли задача взвисшая вдруг, чтобы не плодить копий зависших процессов ? А уж чем чайлд завершился - тут сложно. В бэграунде - ну можно пид проверить, и что-то с процессом сделать, или прямо - ждать код завершения процесса, что при зависшем в бесконечном цикле будет печально. Можно и лочить скрипт, что-бы не было зависших процессов. Примеров в сети полно. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
YuryD Опубликовано 2 ноября, 2017 · Жалоба 6 минут назад, vop сказал: Можно и лочить скрипт, что-бы не было зависших процессов. Примеров в сети полно. В сети - на здоровье :) То, что у меня работает в древней FreeBSD и на голом шелле, как-то родилось без примеров из сети, из манов например, и книжки "программирование на shell". Но - я старый маразматикдогматик, поэтому - каждый делает, как ему проще. Никому свою кочку зрения не навязываю, просто предложил. Просто ТС неполно изложил постановку задачи. Точно ли каждые 19 надо что-то делать ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...