Files
為什麼tail命令不實時跟踪文件中的更改?
當我使用描述符 ie 實時跟踪文件時
tail --follow=descriptor file_name
,它不會顯示文件中所做的更改,而如果我使用名稱 ie 實時跟踪文件tail --follow=name file_name
,它會顯示對文件所做的更改。此外,每次我在使用 tail using 跟踪文件時寫入文件時--follow=name
,tail 輸出顯示文件已被刪除然後重新出現,tail: file_name: No such file or directory
tail: 'file_name' has appeared; following new file
這是輸出,發生了什麼?文件是否從頭開始重寫?每次寫入文件時文件的描述符也會改變嗎?
你是如何寫入文件的?
發生的情況是,當您寫入文件時,您要麼移動它,要麼刪除它,然後創建一個具有相同名稱的新文件,然後寫入該文件。所以當你使用
- –follow=name: tail 只關心文件名,所以在寫入之前,當你移動/刪除文件時,它會告訴你,
tail: file_name: No such file or directory
當你創建一個同名的文件時,它會告訴你,tail: 'file_name' has appeared; following new file
它會寫入文件,你可以看到寫在螢幕上的內容。- –follow=descriptor:tail 將跟隨文件描述符,即使在移動/刪除文件後文件描述符將指向舊文件,您可以通過進入
/proc/{tail process id}/fd
.