Mam pytanie i nie mogłem znaleźć pomocy nigdzie na stackoverflow lub w sieci.Logowanie do nie blokującej nazwanej potoku?
Mam program (kolejka zadań rozproszonych selera) i mam wiele instancji (pracowników), z których każdy ma plik dziennika (celery_worker1.log, celery_worker2.log).
Ważne błędy są przechowywane w bazie danych, ale lubię je od czasu do czasu uruchamiać, aby upewnić się, że wszystko jest w porządku (poziom jest niższy).
Mój problem: te dzienniki zajmują dużo miejsca na dysku. Co chciałbym zrobić: móc "oglądać" dzienniki (ogon-f) tylko wtedy, gdy ich potrzebuję, bez zajmowania dużej ilości miejsca.
Moje pomysły do tej pory: kłody
- outputing na standardowe wyjście, a nie do pliku: nie możliwe tutaj, ponieważ mam wielu pracowników outputing do różnych plików, ale chcę ogona je wszystkie na raz (ogon - f celery_worker * .log)
- za pomocą logrotate: dla mnie jest to rozwiązanie "OK". Nie chcę, żeby to było codzienne zadanie, ale raczej nie umieszczałbym w tym celu minutowego pliku crontab, a więcej, serwer nie jest mój, więc oznaczałoby to trochę pracy po stronie administracyjnej
- używając nazwanych potoków: to wyglądało dobrze od pierwszego wejrzenia, ale nie wiedziałem, że nazwane potoki (linux FIFO), w których blokowanie. Dlatego też, gdy nie piszę WSZYSTKICH rur w tym samym czasie lub kiedy po prostu opuszczam swój ogon, operacje zapisu z rejestratora są blokowane.
Czy istnieje sposób, aby mieć niezablokowane nazwane potoki, które po prostu rzuciłyby się na standardowe wyjście w stanie tailed, i wyrzuciłyby do/dev/null, gdyby nie?
Czy występują problemy techniczne z takim typem rury? Jeśli są, jakie one są?
Dziękuję za odpowiedzi!
możliwy duplikat [Linux non-blocking fifo (rejestracja na żądanie)] (http://stackoverflow.com/questions/7360473/linux-non-blocking-fifo-on-demand-logging) –