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

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

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

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

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

1 ответ1

0

На основе сценария в указанном вопросе вы можете получить выходные данные команды в файл и отправить содержимое файла по электронной почте после завершения одной итерации. В этом случае у вас может быть бесконечный цикл, и когда вы запускаете его, используя nohup в фоновом режиме, он может работать, пока работает хост.

Пример сценария (в данном случае называется parse.sh) может быть:

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

Если вы вызываете скрипт с помощью

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

где 4 - количество процессоров. Это запустит (в этом случае) 4 процесса, выполняющих ваши задачи

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .