Моя цель:
Я бы хотел перенаправить вывод stdout
моей программы foo
в изменяющийся выходной файл в зависимости от времени выполнения программы.
Сама программа foo
прослушивает bsd-сокет для получения пакетов и отображает информацию, содержащуюся в них.
Поэтому, по сути, после запуска программы foo
в течение 10 минут, я хотел бы иметьstdout
вывод
- первой минуты внутри файла
bar_0.dat
- второй минуты внутри файла
bar_1.dat
- …
- 10-я минута внутри файла
bar_9.dat
Возможно ли добиться этого в сценарии оболочки и, если да, как я могу это сделать?
ЧтоМне удалось до сих пор:
Мне удалось только это решение, где программа перезапускается через каждую минуту с перенаправлением в новый выходной файл:
#!/bin/bash
for i in {0..9}
do
timeout 60s foo > "bar_${i}.dat"
done
Однако яхочу, чтобы программа foo
работала непрерывно и не нуждалась в перезапуске, потому что, как я понял, я теряю некоторые прибывающие пакеты (между запущенными экземплярами существует промежуток в 20-30 мс).