2013-12-17 4 views
3

У меня есть 2 сценария оболочки, которые говорят, что a.sh и b.sh запланированы в cron, где первый запуск a.sh запланирован на 5 утра, а второй скрипт b.sh будет работать в 7 утра.Уточнение относительно планирования сценария оболочки

Есть предварительные условия, которые заявляют, что:

1) Only one can run at a time. 
2) The second script b.sh should run only after the first script a.sh completes. 

Теперь проблема является первым a.sh сценарий может завершить выполнение до 7 утра или может превышать 7 утра в некоторых случаях и в том случае, когда оно превышает 7am также запускается второй скрипт, который нарушит одну из предварительных условий.

Здесь я не могу запустить второй скрипт позже в тот же день в качестве его очень важного сценария.

Здесь как я могу заставить оба сценария работать один за другим без первого скрипта, наступающего на второй скрипт.

+0

Написать сценарий оболочки, который запускает 'a.sh', проверить, находится ли текущее время в допустимом диапазоне и запускает' b.sh' в этом случае? –

+0

Итак, вы предлагаете запланировать сценарий оболочки в 5 утра для запуска первого скрипта и после того, как выполняется exec для первого скрипта, и если текущее время> 7am, тогда запустите второй скрипт тоже. Правильно ли это? –

+1

Кажется, что у вас есть уловка 22. Должен работать в 5 && может занять 7 лет. B должен работать на 7, но не может работать во время работы. Тривиально, чтобы они запускались последовательно или в определенное время, но вам все равно нужно как-то смягчить ваши параметры. – BroSlow

ответ

1

Если сценарий a.sh создает файл блокировки, когда он завершен (последняя строка).

touch ~/a.lck 

В начале b.sh:

if [ ! -f ~/a.lck ]; then 
    exit 1 #or whatever you want it to do if the lock file is not there. 
fi 

Не забудьте Р.М. локировок либо в начале A.Sh или конце b.sh!

Смежные вопросы