LinuxForum.Fans
Тема

Выполнение одной команды, только после другой

Автор: KraT_by 4 сообщений 2998 просмотров
#301441

Всем привет,
реализую на 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

тоже самое, даже выключение буферизации не помогло(((

Подскажите плиз, как сделать, чтобы время бралось на моей машине только тогда, когда берется время из файла?

#301444

т.е. по факту, оно делает так
берёт значение из файла - 1
сразу берет текущее время - 2
берёт следующее значение из файла - 3
сразе берет текущее время - 4

И я не могу понять, как может быть разница между 2 и 4, в 0.003 секунды, если между 1 и 3 разница 0.4 секунды?

#301516

"KraT_by" написал:
не могу понять
Ключевое слово -- буферизация вывода.
#301517
"KraT_by" написал:
достан

Взят?

Войдите или зарегистрируйтесь, чтобы ответить.