ฉันมีโปรแกรมสตรีมมิ่งประกายไฟที่อ่านข้อมูลจากซ็อกเก็ตที่ฉันอยากใช้:
nc -lk 9999
โปรแกรมอ่านข้อมูลจากซ็อกเก็ตและแยกข้อความ "ข้อผิดพลาด" เมื่อฉันเขียนด้วยตนเองในซ็อกเก็ตมันทำงานได้ดี
ฉันได้สร้างสคริปต์ python ที่พิมพ์ข้อความ "Error" บ่อยครั้ง ฉันจะบันทึกผลลัพธ์ในไฟล์โดยใช้:
stdbuf -oL python my_script.py &>> my_file.txt
และอ่านไฟล์จากซ็อกเก็ต:
nc -lk 9999 | tail -f my_file.txt
ทุกสิ่งก็โอเคซ็อกเก็ตจะอ่านข้อมูลจากไฟล์ในขณะที่ไฟล์กำลังถูกอัปเดตบนพื้นหลัง แต่ปัญหาคือโปรแกรมประกายไฟของฉันไม่จับข้อความ "ข้อผิดพลาด"
โดยสรุป: เมื่อฉันเขียนข้อความ "ข้อผิดพลาด" ในซ็อกเก็ตด้วยตนเองจุดประกายจับพวกเขา แต่จะไม่จับข้อความ "ข้อผิดพลาด" ที่สร้างโดยสคริปต์หลามจากซ็อกเก็ต
ที่จริงแล้วโปรแกรมไม่ทำงานถ้าฉันอ่านไฟล์จากซ็อกเก็ตแทนที่จะพิมพ์ลงไป
อะไรคือความแตกต่าง?
rsyslog
เขียนโดยตรงไปยังmy_file.txt
แทนที่จะเป็นซ็อกเก็ต แค่ความคิด แต่บางทีฉันไม่เข้าใจการตั้งค่าของคุณอย่างสมบูรณ์