NetworkManager намеренно не останавливает работу сети при завершении работы. Поскольку он поддерживает перехват («управления» )сетевыми устройствами, которые были запущены системой конфигурации сети системы, например. ifcfg в Fedora, ifupdown в Debian. Он также оставляет систему, чтобы остановить их.
Однако теперь Fedora считает ifcfg устаревшим и не включает его по умолчанию. Поэтому скрипт stop также никогда не запускается.
Ниже команда awk
сначала получает текущие и прошедшие 5 минут назад даты и преобразует их во время эпохи(Время Unix)и устанавливает в startTime и endTime соответственно; а затем для каждой строки, которую мы читаем, он также преобразует столбец даты первого поля в эпоху и проверяет, находится ли время между startTime и endTime, а затем выполняет необходимые вычисления. В поле END
выводим последнее рассчитанное значение переменных sum
, total
и nonZero
.
awk -vstartTime="$(date -d'-5 minutes' '+%s')" \
-vendTime="$(date '+%s')" \
-F, '{ epoch="date -d\"" $1 "\" +%s"; epoch |getline timestamp; }
(timestamp>=startTime && timestamp<=endTime){ sum+=$NF; total++; if($NF!=0)nonZero++ }
END{ print sum, total, nonZero }' OFS=, infile
ручной тест на заданных тестовых данных:
awk -vstartTime=1578571800 \
-vendTime=1578572100 \
-F, '{ epoch="date -d\"" $1 "\" +%s"; epoch |getline timestamp; }
(timestamp>=startTime && timestamp<=endTime){ sum+=$NF; total++; if($NF!=0)nonZero++ }
END{ print sum, total, nonZero }' OFS=, infile