Чи є вагомі підстави для виконання однієї команди cron декількома командами [closed]


1

Як би 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 такий об'єкт?

Відповіді:


2

Що стосується першої точки, то ні ваш, ні ваш crontabs не забезпечують належного розв'язання залежності, оскільки кожна команда виконується незалежно від випуску попередньої. Для цього потрібно скористатися оператором && між вашими командами. Це також відповідає на перші три останні запитання.

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

Для другого з трьох останніх питань відповідь «так», але вона може бути складною. Ви повинні вручну визначити, яке завдання може безпечно працювати одночасно, з якими інші, і налаштувати механізм, який дозволить вашому наступному набору завдань дізнатися, чи вдалося виконати перші. У Cron немає нічого вбудованого, щоб допомогти вам.


Підтримка - хороший момент. Значно легше змінюється як одна робота, тоді як 6 або 7 робочих місць.
nelaaro
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.