Я хочу изучать 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
Вместо того, чтобы вызывать новый скрипт каждую минуту или около того через cron, я бы назвал один скрипт и поместил весь ваш код в этот скрипт. Затем используйте команду sleep (при условии, что вы выполняете сценарии в bash, если не эквивалент для этого языка сценариев), чтобы подождать определенный интервал перед выполнением следующей части сценария. Это обеспечит время между сценариями, и они будут работать только после успешного завершения другого сценария.
Примером может быть:
Cron (запускать скрипт каждые 15 минут)
* / 15 * * * * / path / to / script
blockquote>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 секунд перед выполнением следующей строки.
Ваш друг - старомодный 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
Напишите еще 4-й сценарий, который называет первые 3 скрипта по порядку.
#! /bin/sh
/path/to/script1
/path/to/script2
/path/to/script3
Затем назовите 4-го от cron. Самая распространенная проблема cron заключается в том, что он работает с минимальной оболочкой, поэтому все сценарии, включая 4-й сценарий, следует указывать по полному пути.
Если у вас возникли проблемы с этим, опубликуйте свою запись cron и более подробную информацию о проблеме, с которой вы столкнулись.