Запускать cronjob в определенный день месяца, но раньше, если он выпадает на выходные

С помощью zshс использованием своего${a:^b}оператора сжатия массива :

{read -A a; read -A b} < your-file-with-those-2-lines.txt
printf "'%s': '%s',\n" ${a:^b}
1
17.07.2020, 09:10
1 ответ

Я бы создал скрипт runsometimes.shс содержимым:

#!/bin/bash
if [ $(date +%d) -eq 18 && $(date +%A) == "Friday" ] ; then/opt/example.sh ; exit ; fi
if [ $(date +%d) -eq 19 && $(date +%A) == "Friday" ] ; then /opt/example.sh ; exit; fi
if [ $(date +%d) -eq 20 ] ; then /opt/example.sh ; fi

и убедитесь, что cron проверяет его каждый день:0 6 * * * runsometimes.sh

Некоторые примечания:

  • Сценарий, который я написал, длиннее, чем должен быть, вы можете сократить его до 1 "if -then -fi", комбинируя условия. Я просто написал так, потому что так легче читать
  • «Хороший стиль» диктует, что я должен играть с elseвместо exit, но опять же :Я думаю, что это легче читать
  • Я быстро написал ответ, не проверяя его, проверьте его, прежде чем использовать!
  • Я предполагаю, что ваша система снова использует английскую локаль (для облегчения чтения ). Если вы хотите сделать это "правильно", используйте $(date +%u) -eq 5вместо$(date +%A) == Friday

Редактировать:Я не прочитал весь вопрос и пропустил, что вы хотели сделать это только с помощью cron. Боюсь, что это невозможно...

-3
18.03.2021, 23:19

Теги

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