Как я могу использовать Cron для запуска сценариев оболочки в фиксированное время?

Я хочу изучать cron, и я искал некоторые качественные учебники. Я нашел Как мне настроить работу cron .

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

Пример:

Main Folder
    Sub1 - script1
    Sub2 - script2
    Sub3 - script3

Cron 10:01 - runs script1
Cron 10:02 - runs script2
Cron 10:03 - runs script3
Cron 10:04 - runs script1
Cron 10:05 - runs script2
2
задан 13 April 2017 в 15:25

3 ответа

Вместо того, чтобы вызывать новый скрипт каждую минуту или около того через cron, я бы назвал один скрипт и поместил весь ваш код в этот скрипт. Затем используйте команду sleep (при условии, что вы выполняете сценарии в bash, если не эквивалент для этого языка сценариев), чтобы подождать определенный интервал перед выполнением следующей части сценария. Это обеспечит время между сценариями, и они будут работать только после успешного завершения другого сценария.

Примером может быть:

Cron (запускать скрипт каждые 15 минут)

* / 15 * * * * / path / to / script

Script

 #!/bin/bash
 if command
       then
                   command executed successfully
                   sleep 120

       else
                   command failed so
                   execute all commands up to fi
       fi

Обратите внимание на sleep 120 , который сообщает bash, чтобы подождать 2 минуты или 120 секунд перед выполнением следующей строки.

0
ответ дан 13 April 2017 в 15:25

Идея Наброски

Ваш друг - старомодный cron компаньон at.

Команды at и batch read из стандартного ввода или указанного файла, которые должны быть выполнены позднее, с использованием / bin / sh

Объедините это с run-parts.

run-parts - запускать скрипты или программы в каталоге

Идея состоит в том, что вы пишете задание cron, которое запускает скрипты в «подпапках» с использованием run-parts.

Если вы хотите распараллелить выполнение в зависимости от загрузки системы, вы можете заключить выполнение каждого отдельного сценария в batch.

Пример

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

Сценарии cron. {Ежедневно, еженедельно, ежемесячно} оборачиваются в моем crontab следующим образом:

@midnight   root  test -x /usr/sbin/anacron ||  for script in $( run-parts --list  /etc/cron.daily)  ; do batchme --quiet --info "cron-daily ${script}" ${script} ; done

@weekly   root  test -x /usr/sbin/anacron ||  for script in $( run-parts --list  /etc/cron.weekly) ; do batchme --quiet --info "cron-weekly ${script}" ${script} ; done

@monthly        root  test -x /usr/sbin/anacron ||  for script in $( run-parts --list  /etc/cron.monthly); do batchme --quiet --info "cron-monthly ${script}" ${script} ; done
0
ответ дан 13 April 2017 в 15:25

Напишите еще 4-й сценарий, который называет первые 3 скрипта по порядку.

 #! /bin/sh
/path/to/script1
/path/to/script2
/path/to/script3

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

Если у вас возникли проблемы с этим, опубликуйте свою запись cron и более подробную информацию о проблеме, с которой вы столкнулись.

0
ответ дан 13 April 2017 в 15:25

Другие вопросы по тегам:

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