Бесконечный цикл заданий cron с промежуточным выводом каждого задания

1224
Community

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

Как и в случае с вопросом 538622, я также хотел бы, чтобы задание было «повторно отправлено » после завершения. Это невозможно сделать с помощью скрипта с бесконечным циклом, потому что мне нужно постоянно собирать то, что приходит по электронной почте из cron.

Если возможно, я также хотел бы, чтобы N заданий выполнялось параллельно, когда на компьютере установлено N ЦП.

До сих пор я планировал запускать задания каждые X минут, но так как компьютер используется другими, это не очень эффективное использование времени, и существует риск заполнения машины моими заданиями, которые занимают все больше и больше времени ( так что икс х минут не хватит).

Есть идеи, как это сделать?

0

1 ответ на вопрос

0
Lambert

Based on the script in the referred question you can fetch command output to a file, and email the file content after one iteration completes. In that case you can have an infinite loop and when you start it using nohup into the background it can run as long as the host is up.

Sample script (called parse.sh in this case) can be:

while true do command &> /tmp/output_thread_$1 cat /tmp/output_thread_$1 | mail -s "output from thread $1" email@recipient done 

If you call the script using

for thread in 1 2 3 4; do nohup parse.sh $thread & done; 

where 4 is the number of cpus. It will start (in this case) 4 processes doing your stuff

Это решило бы мою задачу, но утратило приятную особенность - позволить cron'у позаботиться о отправке по электронной почте стандартного вывода. 8 лет назад 0

Похожие вопросы