Как я суммирую вместе размеры файла в ударе, группируясь результаты по дате?

Cronjob не может гарантировать секунды точно. Именно поэтому, как правило, интервал cronjob не меньше минуты. Таким образом, на самом деле он не обрабатывает «вещи отключаются на несколько секунд».

Что происходит в laravel, так это после запуска команды планирования в первый раз, когда сервер спрашивает «Есть ли работа в очереди ?» каждую минуту. Если нет, это ничего не делает.

Например, возьмите «ежедневный» cronjob. Планировщику не нужно знать, когда он выполнял задачу в последний раз или что-то в этом роде. Когда он сталкивается с ежедневным cronjob, он просто проверяет, полночь ли это. Если это полночь, он запускает работу.

Кроме того, возьмите cronjob «каждые тридцать минут». Может быть, вы зарегистрировали cronjob в 10:25. Но все же в первый раз он будет работать в 10:30, а не в 10:55. Неважно, когда вы зарегистрировались или когда в последний раз он запускался. Он только проверяет, является ли текущая минута «00» или делится на тридцать. Так что в 10:30 он будет работать. Опять же, он будет работать в 11:00. и так далее.

Точно так же десятиминутный cronjob по умолчанию будет проверять, делится ли текущая минута на десять или нет. Таким образом, независимо от времени, когда вы зарегистрировали команду, она будет выполняться только в XX: 00, XX: 10, XX: 20 и так далее.

Именно поэтому по умолчанию не требуется сохранять ранее выполненное запланированное задание. Тем не менее, вы можете сохранить его в файл, если вы хотите для целей мониторинга.

12
задан yukondude 13 March 2009 в 16:38
поделиться

3 ответа

Я часто использую эту идиому Awk:

awk '{sum[$2]+= $1;}END{for (date in sum){print sum[date], date;}}'
15
ответ дан 2 December 2019 в 04:53
поделиться

После предложений от ashawley и vartec, следующая "острота" добивается цели великолепно:

ls -l --time-style=long-iso *log |
    awk '{sum[$6]+= $5;}END{for (s in sum){print sum[s], s;}}' |
    sort -k2 |
    column -t
2
ответ дан 2 December 2019 в 04:53
поделиться

Полагайте, что на Linux у Вас, вероятно, есть GNU awk, таким образом, Вам не нужны другие команды:

ls -l --time-style=long-iso * | 
  WHINY_USERS=-9 awk 'END {
    for (s in sum)
      printf "%-15s\t%s\n", sum[s], s
      }
  { sum[$6]+= $5 }
  '
1
ответ дан 2 December 2019 в 04:53
поделиться
Другие вопросы по тегам:

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