Всем привет,
реализую на Ubuntu скрипт, но столкнулся с проблемой.
Цель скрипта: В файл постоянно записывается информация, в которой есть timestamp. Он там появляется каждые 0.04 секунд.
Мне надо достать из файла этот timestamp и сразу же вывести информацию, в какое время timestamp был достан (хз как слово достан по другому сказать)
Проблема:
a=$(sed -n -e "$x"p news | sed -e 's/\.//') # достаю из файла время (файл динамически заполняется $x нужен, чтобы переходило на следующую строку)
c=$(date +%s.%N | sed 's/[0-9]\{5\}$//' | sed -e 's/\.//') # сразу же получаю время на моей машине.
И такой цикл. Проблема в том, что оно получает из файла вермя каждый 0.4 секунды, а дату на машине выводит каждые 0.03 секунд.
И я не могу понять почему.
Пытался сделать тоже самое через пайп:
curl -s xxxx | strings | stdbuf -oL grep -a -E -o [0-9]{10}.[0-9]{4} | while true; do read a; if [[ "$a" = "" ]]; then break; fi; stdbuf -oL echo $a; date +%s.%N ; done
тоже самое, даже выключение буферизации не помогло(((
Подскажите плиз, как сделать, чтобы время бралось на моей машине только тогда, когда берется время из файла?
LinuxForum.Fans
Выполнение одной команды, только после другой
Автор: KraT_by
4 сообщений
2998 просмотров
т.е. по факту, оно делает так
берёт значение из файла - 1
сразу берет текущее время - 2
берёт следующее значение из файла - 3
сразе берет текущее время - 4
И я не могу понять, как может быть разница между 2 и 4, в 0.003 секунды, если между 1 и 3 разница 0.4 секунды?
Ключевое слово -- буферизация вывода.не могу понять
достан
Взят?
Войдите или зарегистрируйтесь, чтобы ответить.