Существуют ли веские причины для выполнения одного задания cron несколькими командами [закрыто]

1

Как бы cron справился с заданием, которое выполняет несколько команд.

В качестве примера у меня есть работа cron, которая выглядит следующим образом. Который становится очень трудно читать.

10 0 * * * firstscript.sh > first.log; secondscript.sh >> second.log; thirdscript.sh >> third.log 2>&1;

Все три сценария выполняются одновременно. В моем окружении у нас есть 6 команд, выполняемых последовательно.

Почему бы не написать ту же работу тремя отдельными работами.

10 0 * * * firstscript.sh > first.log;  
10 0 * * * secondscript.sh >> second.log; 
10 0 * * * thirdscript.sh >> third.log 2>&1;

Я унаследовал эти задания и пытаюсь лучше понять, почему они выполняются в виде нескольких команд вместо 3 отдельных заданий.

  • Первая причина, по которой я могу думать, что между сценариями могут быть зависимости. Таким образом, они должны работать в этом конкретном порядке. Так secondscript.sh зависит от firestscript.sh комплектующие.

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

Если первый скрипт завершается с ошибкой, выполняются ли команды, следующие за ним?
Если зависимости являются проблемой, есть ли способ разделить работу на несколько работ и при этом удовлетворить зависимости?
Есть ли у cron такая возможность?

nelaaro
источник

Ответы:

2

Что касается вашего первого пункта, ни ваш, ни ваш crontabs не обеспечивают правильное разрешение зависимостей, потому что каждая команда выполняется независимо от проблемы предыдущей. Для этого вы хотите использовать оператор && между вашими командами. Это также отвечает на первый из вас последние 3 вопроса.

Ваш второй пункт может быть действительным, в зависимости от контекста. Хотя я подозреваю, что причина написания всех команд в одну строку в том, что проще просто добавить что-то в конце, чем добавить новую строку с новым расписанием. Одной из причин может быть также обслуживание: если вы хотите изменить расписание для всех своих команд, проще изменить только одну строку.

На второй из ваших последних 3 вопросов ответ - да, но это может быть сложно. Вы должны вручную определить, какая задача может безопасно выполняться одновременно с какой-либо другой, и настроить механизм, позволяющий вашему следующему набору задач знать, были ли первые выполнены успешно или нет. Крон не имеет ничего встроенного, чтобы помочь вам там.

m4573r
источник
техническое обслуживание является хорошим моментом. Значительно легче изменить как одну работу, так и 6 или 7 работ.
nelaaro