Скорость передачи составляет бит в секунду, а не байтов . Обычно у вас будет больше битов, чем только из байтов данных (8 бит), поскольку данные отправляются с некоторыми накладными расходами (кадрирование). См., Например, обсуждение MathWorks .
picocom - эмулятор терминала, и ему необходимо знать скорость, с которой устройство должно работать, потому что оно может запрашивать скорость только на своей локальной стороне линии связи - она должна соответствовать удаленной стороне.
Насколько я понимаю, logrotate передаст имя файла журнала сценарию в postrotate
; вы можете использовать сценарий и первый параметр, а также знание того, что logrotate создал повернутые файлы с использованием формата даты -%s
для создания списка этих файлов:
import sys
import fnmatch
import os
for file in os.listdir(os.path.dirname(sys.argv[1])):
if fnmatch.fnmatch(file, os.path.basename(sys.argv[1]) + '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'):
print(file)
Это мой первый скрипт на Python, так что он может быть не идиоматическим, но, надеюсь, показывает идею. Функция fnmatch ()использует глобус, который должен покрывать вас в течение нескольких лет (до конца ноября 2286 года ), когда 9 999 999 999 секунд превратятся в 10 000 000 000. Вы можете «расширить» глобус так, чтобы он «просто» требовал «10 цифр, а затем что угодно»:
...
if fnmatch.fnmatch(file, os.path.basename(sys.argv[1]) + '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]*'):
...
Вы можете добавить суффикс к вашему dateformat -%s
, например X
, тогда вы сможете найти уникальный файл *X
и после переименования его без X передать его вашему питону:
dateformat -%sX
postrotate
for f in *X; do mv "$f" "${f%X}" && test.py "${f%X}"; done
endscript
Я использовал петлю for
, чтобы сделать ее менее хрупкой. Возможно, вам потребуется проверить правильность прохождения через ваш /bin/sh
.
postrotate
python3 /opt/myapp/test.py $1-`date '+%Y%m%d'` > /dev/null
endscript
Это будет работать до тех пор, пока выполняется в тот же день.