Страница 1 из 1

stdout в несколько файлов

Добавлено: 2014-02-03 12:16:10
BonanZant
Добрый, день, форумчане!
Прошу помощи в реализации небольшого скрипта перенаправления вывода в несколько файлов.
Есть скрипт:

Код: Выделить всё

#!/bin/sh
DIR=/var/queue/log
NAME=queue_log_$(date +%Y%m%d%H%M%S)
pfctl -vvsq > $DIR/$NAME
Команда pfctl -vvsq выводит статистику по очередям раз в 5 секунд. Возможно ли реализовать, что бы при каждом новом выводе данные записывались в новый файл типа log_$(date +%Y%m%d%H%M%S)?

Re: stdout в несколько файлов

Добавлено: 2014-02-03 13:28:10
FreeBSP
12 ежеминутных записей в крон типа
* * * * * * root script
* * * * * * root sleep 5 & script
...
* * * * * * root sleep 55 & script

Re: stdout в несколько файлов

Добавлено: 2014-02-03 13:49:57
Neus
оберни то что в {} в цикл бесконечный:

Код: Выделить всё

#!/bin/sh
DIR=/var/queue/log
{
NAME=queue_log_$(date +%Y%m%d%H%M%S)
pfctl -vvsq > $DIR/$NAME
sleep 5
}
и запускай его /path/to/script &

Re: stdout в несколько файлов

Добавлено: 2014-02-03 14:12:22
FreeBSP
так поедет..
положим, что команда выполняется 0,001 сек, тогда уже через 1000 циклов, меньше 2 часов, цикл съедет на секнду, через 4 дня - на минуту, и это при фиксированном времени выполнения проги.
крон не гарантирует, что всегда все будет идеально, он бывает запаздывает, в зависимомости от загруженности, но от такой езды предохранит
тоесть эти 5 сек вставляются в разные моменты времени, в кроне - между запусками, в скрипте - между окончанием одного и запуском следующего

Re: stdout в несколько файлов

Добавлено: 2014-02-03 14:14:00
BonanZant
FreeBSP писал(а):12 ежеминутных записей в крон типа
* * * * * * root script
* * * * * * root sleep 5 & script
...
* * * * * * root sleep 55 & script
Не подходит, т.к. pfctl -vvsq работает в реальном времени, как, например, tcpdump -i re0 -n -nn -ttt.
Neus писал(а):оберни то что в {} в цикл бесконечный:

Код: Выделить всё

#!/bin/sh
DIR=/var/queue/log
{
NAME=queue_log_$(date +%Y%m%d%H%M%S)
pfctl -vvsq > $DIR/$NAME
sleep 5
}
и запускай его /path/to/script &
Попробовал - не получилось. Продолжает писать всё в один файл.

Re: stdout в несколько файлов

Добавлено: 2014-02-03 14:16:24
FreeBSP
тогда в пайпе обрабатывай выхлоп и раскидывай его по файлам

Re: stdout в несколько файлов

Добавлено: 2014-02-03 14:17:40
BonanZant
FreeBSP писал(а):тогда в пайпе обрабатывай выхлоп и раскидывай его по файлам
Прошу подкинуть мануал для изучения.

Re: stdout в несколько файлов

Добавлено: 2014-02-03 14:37:01
FreeBSP
https://www.google.ru/search?q=shell+scripting
https://www.google.ru/search?q=shell+pipe
например
что то с ходу и не подскажу хороших мануалов для новичка по сприптописанию
опять же, обработчик текста можно на любом языке писать, sh php perl c/c++

Re: stdout в несколько файлов

Добавлено: 2014-02-03 14:46:12
BonanZant
FreeBSP писал(а):https://www.google.ru/search?q=shell+scripting
https://www.google.ru/search?q=shell+pipe
например
что то с ходу и не подскажу хороших мануалов для новичка по сприптописанию
опять же, обработчик текста можно на любом языке писать, sh php perl c/c++
Спасибо, попробую разобраться. Обработчик уже почти написан на php. Сейчас стоит задача реализации shell-скрипта по сбору данных. Всё это делается для визуализации мониторинга потребления интернет-канала, в разрезе очередей (отделов).

Re: stdout в несколько файлов

Добавлено: 2014-02-03 15:16:16
Neus
BonanZant писал(а):
Neus писал(а):оберни то что в {} в цикл бесконечный:

Код: Выделить всё

#!/bin/sh
DIR=/var/queue/log
{
NAME=queue_log_$(date +%Y%m%d%H%M%S)
pfctl -vvsq > $DIR/$NAME
sleep 5
}
и запускай его /path/to/script &
Попробовал - не получилось. Продолжает писать всё в один файл.
т.е. команда "pfctl -vvsq" сама раз в 5 сек выдает вывод на stdout?

Re: stdout в несколько файлов

Добавлено: 2014-02-03 18:18:10
BonanZant
Neus писал(а):т.е. команда "pfctl -vvsq" сама раз в 5 сек выдает вывод на stdout?
Всё верно.