Для ежедневных и еженедельных заданий вы можете проверить, является ли день месяца 1
, и запускать только в том случае, если это не так:
0 6 * * 1-6 [ "$(date '+%%-d')" -ne 1 ] && server.sh backup daily # Run Monday-Saturday
0 6 * * 0 [ "$(date '+%%-d')" -ne 1 ] && server.sh backup weekly # Run every Sunday
Директива форматирования +%%-d
- "день месяца, без нулевого заполнения ».
%%
необходимо удвоить, иначе cron интерпретирует его как символ новой строки.
Некоторые версии date
не поддерживают -
, чтобы удалить нулевое заполнение, и на самом деле это не требуется, потому что [ 01 -eq 1 ]
истинно (но [ 01 = 1 ]
нет!), Но это чище.