У меня есть вопрос, и я не могу найти помощь где-либо в stackoverflow или в Интернете.Вход в неблокирующий именованный канал?
У меня есть программа (распределенная задача с сельдерием), и у меня есть несколько экземпляров (работников), каждый из которых имеет файл журнала (celery_worker1.log, celery_worker2.log).
Важные ошибки хранятся в базе данных, но мне нравится время от времени затягивать эти журналы при запуске новых операций, чтобы убедиться, что все в порядке (уровень log ниже).
Моя проблема: эти журналы занимают много места на диске. То, что я хотел бы сделать: иметь возможность «смотреть» журналы (хвост -f) только тогда, когда мне это нужно, без того, чтобы они занимали много места.
Мои идеи до сих пор: журналы
- outputing на стандартный вывод, а не в файл: здесь невозможно, так как у меня есть много рабочих outputing в разные файлы, но я хочу, чтобы хвост их все сразу (хвост - f celery_worker * .log)
- использование logrotate: это решение «ОК» для меня. Я не хочу, чтобы это была ежедневная задача, но скорее не ставила бы минуту crontab для этого, и больше, сервер не мой, так что это означало бы некоторую работу на стороне администратора.
- с использованием именованных каналов: it выглядел хорошо на первый взгляд, но я не знал, что именованные каналы (linux FIFO) блокируют. Следовательно, когда я не нахожу хвост -f ВСЕХ труб в одно и то же время, или когда я просто ухожу с моего хвоста, операции записи из регистратора блокируются.
Есть ли способ иметь неблокирующий именованный канал, который будет просто бросать в stdout при хвосте и бросать в/dev/null, если нет?
Или существуют технические трудности для такого типа трубы? Если да, то какие?
Благодарим за ответы!
Возможный дубликат [Linux неблокирующий fifo (по запросу)] (http://stackoverflow.com/questions/7360473/linux-non-blocking-fifo-on-demand-logging) –