Как проверить поднят ли pipe канал

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
IrviS
рядовой
Сообщения: 14
Зарегистрирован: 2008-02-13 18:19:02

Как проверить поднят ли pipe канал

Непрочитанное сообщение IrviS » 2008-02-19 14:38:37

Привет ребят!

Настроен сквид.
Данные которые он передает пропускаю через ./squid2mysql
использую pipe-канал. (# mkfifo /var/log/squid/access.log)
запускаю так

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

squid_start() {
    ./usr/local/sbin/squid2mysql < /usr/local/squid/logs/access.log &
    echo "Starting fifo."
    ${command} ${squid_flags}
    echo "Starting ${name}."
}
Хочу сделать проверку: запустился ли pipe-канал

За ранее всем спасибо!

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2460 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35071
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Как проверить поднят ли pipe канал

Непрочитанное сообщение Alex Keda » 2008-02-19 17:36:06

если файл есть, и его кто-то слушает - то поднялся
Убей их всех! Бог потом рассортирует...

Гость
проходил мимо

Re: Как проверить поднят ли pipe канал

Непрочитанное сообщение Гость » 2008-02-20 3:23:37

lissyara, как ты узнаешь слушает ли его кто-то? это ведь не сокет...
можно конечно проверить живы ли pid'ы тех процессов, кои должны fifo слушать и существует ли сам файл... однако может случится так, что и pid'ы, и файл на месте, а данные не идут: anonymous pipe'ы где-то не подняты, к-ые соединяют программу и named pipe или глюк в самой программе

IrviS
рядовой
Сообщения: 14
Зарегистрирован: 2008-02-13 18:19:02

Re: Как проверить поднят ли pipe канал

Непрочитанное сообщение IrviS » 2008-02-20 8:55:46

Гость, squid2mysql не создает пид и как отследить, что по тунелю бегает траф, кроме как команды cat ни чего не спасает. Вопрос остается актуальным.

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: Как проверить поднят ли pipe канал

Непрочитанное сообщение zingel » 2008-02-20 8:57:33

man stat
Z301171463546 - можно пожертвовать мне денег

Аватара пользователя
Adekamer
пингвин
Сообщения: 694
Зарегистрирован: 2007-10-09 18:36:48
Откуда: 127.0.0.1
Контактная информация:

Re: Как проверить поднят ли pipe канал

Непрочитанное сообщение Adekamer » 2008-02-20 9:37:58

1 внимательно следить за SIGPIPE
2 для тестирования можно попробовать еще tee вкорячить (но это очень осторожно)
3 ключик -m испозовать при создании наймпайпа а то потом не всегда ясно что там с пермишенами
4 в последователях system V (коим не является BCD - но например LInux это последователь) есть отдельные настройки ядра управляющие IPC

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35071
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Как проверить поднят ли pipe канал

Непрочитанное сообщение Alex Keda » 2008-02-20 10:28:50

Гость писал(а):lissyara, как ты узнаешь слушает ли его кто-то? это ведь не сокет...
можно конечно проверить живы ли pid'ы тех процессов, кои должны fifo слушать и существует ли сам файл... однако может случится так, что и pid'ы, и файл на месте, а данные не идут: anonymous pipe'ы где-то не подняты, к-ые соединяют программу и named pipe или глюк в самой программе
в общем - согласен, но исходя из прямых программ чтения - тайл например - достаточно проверить что он жив.
Убей их всех! Бог потом рассортирует...

Гость
проходил мимо

Re: Как проверить поднят ли pipe канал

Непрочитанное сообщение Гость » 2008-02-20 11:27:44

IrviS писал(а):Гость, squid2mysql не создает пид и как отследить, что по тунелю бегает траф, кроме как команды cat ни чего не спасает. Вопрос остается актуальным.
Ну так отлови pid при помощи pgrep(1)
$! (pid of last background job) был дан для примера.
zingel писал(а):man stat
например? как ме определить consumer'ов у fifo при помощи stat(1)? fstat(1) молчит...
Adekamer писал(а):1 внимательно следить за SIGPIPE
и когда же SIGPIPE должен появится? че-то trap "echo gotcha" pipe у меня его не ловит
Adekamer писал(а):2 для тестирования можно попробовать еще tee вкорячить (но это очень осторожно)
tee <>fifo log что ли? неа, тогда данные так и остануться в tee, а до адресата не дойдут
Adekamer писал(а):4 в последователях system V (коим не является BCD - но например LInux это последователь) есть отдельные настройки ядра управляющие IPC
sysctl -a | grep ipc
lissyara писал(а):в общем - согласен, но исходя из прямых программ чтения - тайл например - достаточно проверить что он жив.
tail -f съест все данные... или есть какойто способ прослушки pipe'а, чтобы не повредить поток в нем?

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35071
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Как проверить поднят ли pipe канал

Непрочитанное сообщение Alex Keda » 2008-02-20 11:32:51

насчёт прослушки - думаю пишется на раз - читаем строку, отдаём её на стдоут, и до кучи ещё куданить - на стерр или в файл....
такая вот прокладка...
а чтоб штатно чём-то такое изобразить - даже не знаю =(
Убей их всех! Бог потом рассортирует...

Гость
проходил мимо

Re: Как проверить поднят ли pipe канал

Непрочитанное сообщение Гость » 2008-02-20 11:37:24

lissyara писал(а):насчёт прослушки - думаю пишется на раз - читаем строку, отдаём её на стдоут, и до кучи ещё куданить - на стерр или в файл....
такая вот прокладка...
Так если я не ошибаюсь то pipe(2) работает не построчно ;(

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35071
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Как проверить поднят ли pipe канал

Непрочитанное сообщение Alex Keda » 2008-02-20 11:38:54

тредстартер вроде логи туда писал?
Или я топик спутал...
==========
не суть - можно делать посимвольно.
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Adekamer
пингвин
Сообщения: 694
Зарегистрирован: 2007-10-09 18:36:48
Откуда: 127.0.0.1
Контактная информация:

Re: Как проверить поднят ли pipe канал

Непрочитанное сообщение Adekamer » 2008-02-20 12:03:43

этта - дело в том что SIGPIPE появляется когда один пыиается писать - а читать то оттуда уже не читают - и процессу срущему в трубу посылается сигпаййп - а вот обработка сигпайпа в БСДе кривая и сильно отличается от классической system V
tee надо опосля сигпайпа поставитьт- чтоб он читал и передавал уже дальше
по ядру - в линухе (2.6 ветка) за IPC отвечают msgmax msgmni msgmnb sem если не ошибаюсь

Аватара пользователя
idle
мл. сержант
Сообщения: 80
Зарегистрирован: 2007-02-28 12:21:52
Откуда: Барселона
Контактная информация:

Re: Как проверить поднят ли pipe канал

Непрочитанное сообщение idle » 2008-02-20 12:11:00

sockstat -u

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35071
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Как проверить поднят ли pipe канал

Непрочитанное сообщение Alex Keda » 2008-02-20 13:08:59

lissyara писал(а):тредстартер вроде логи туда писал?
Или я топик спутал...
==========
не суть - можно делать посимвольно.
и получиться всё тот же tee...
Велосипед =)
Убей их всех! Бог потом рассортирует...

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: Как проверить поднят ли pipe канал

Непрочитанное сообщение zingel » 2008-02-20 13:13:01

например? как ме определить consumer'ов у fifo при помощи stat(1)? fstat(1) молчит...

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

stat -x `ls /var/log/* | grep squid` | grep -v 'Uid:' | awk '{print $5}' | sort -rn | sed 5q | grep -E ^[1-9] | xargs lsof
я бы это добро в for засунул, с условием if сквид умер then запустить эту команду и всё это добро в крон (раз в час)
Z301171463546 - можно пожертвовать мне денег