Semasa memotong fail log Nginx, saya menemui masalah pelik. Apabila saya memindahkan fail log Nginx secara manual, jika saya tidak memuatkan semula fail konfigurasi, Nginx akan terus menulis fail log yang telah dipindahkan ke direktori lain.
Tidakkah Nginx menggunakan laluan fail semasa menulis log?
Mengapa fail log masih boleh ditulis selepas dialihkan?
Ini ialah ciri sistem fail, agak serupa dengan pengiraan rujukan dalam bahasa pengaturcaraan yang menguruskan kitaran hayat pembolehubah. Alihkan fail, atau padamkan fail, selagi fail masih dibuka melalui proses, fail itu masih boleh diakses. Tetapi jika semua "rujukan" hilang, seperti nama fail, pautan keras dan pemegang fail (tidak lagi dibuka oleh program), maka rujukan seterusnya kepada fail akan terjejas, dan ia akan muncul sebagai "Fail tidak dijumpai " ”.
Saya rasa sebabnya ialah selepas nginx membuka fail log, ia sebenarnya dikenal pasti oleh inode dalam sistem, memindahkan fail tidak akan mengubah suai nombor inode, jadi fail akan terus ditulis.
nginx secara amnya cache inod fail untuk kelajuan yang lebih pantas.