Tôi có một câu hỏi và tôi không thể tìm thấy trợ giúp ở bất cứ nơi nào trên stackoverflow hoặc web.Đăng nhập vào một đường ống có tên không bị chặn?
Tôi có một chương trình (hàng đợi nhiệm vụ phân phối cần tây) và tôi có nhiều trường hợp (công nhân) mỗi người có một logfile (celery_worker1.log, celery_worker2.log).
Các lỗi quan trọng được lưu trữ vào cơ sở dữ liệu, nhưng thỉnh thoảng tôi thích các nhật ký này khi chạy các thao tác mới để đảm bảo mọi thứ đều ổn (giá trị thấp hơn).
Vấn đề của tôi: các nhật ký này đang chiếm nhiều dung lượng đĩa. Những gì tôi muốn làm: có thể "xem" các bản ghi (tail -f) chỉ khi tôi cần nó, mà không có họ chiếm rất nhiều không gian.
ý tưởng của tôi cho đến bây giờ: các bản ghi
- outputing stdout, không vào một tập tin: không thể thực hiện ở đây kể từ khi tôi có nhiều công nhân outputing các tập tin khác nhau, nhưng tôi muốn đuôi chúng cùng một lúc (đuôi - f celery_worker * .log)
- sử dụng logrotate: đó là giải pháp "OK" cho tôi. Tôi không muốn điều này là một nhiệm vụ hàng ngày nhưng không muốn đặt một phút crontab cho điều này, và nhiều hơn nữa, máy chủ không phải là của tôi để có nghĩa là một số công việc ở phía bên quản trị
- sử dụng các đường ống được đặt tên: nhìn tốt ở cái nhìn đầu tiên nhưng tôi không biết rằng tên ống (linux FIFO), nơi chặn. Do đó, khi tôi không tail -f TẤT CẢ các đường ống cùng một lúc, hoặc khi tôi chỉ cần bỏ đuôi của tôi, các hoạt động bằng văn bản từ logger bị chặn.
Có cách nào để có một ống không được đặt tên, mà sẽ chỉ ném đến stdout khi đuôi, và ném đến/dev/null khi không?
Hoặc có những khó khăn về kỹ thuật đối với loại ống như vậy không? Nếu có, chúng là gì?
Cảm ơn câu trả lời của bạn!
có thể trùng lặp của [năm năm không chặn Linux (theo yêu cầu đăng nhập)] (http://stackoverflow.com/questions/7360473/linux-non-blocking-fifo-on-demand-logging) –