題 ls -l顯示/ proc中文件的文件大小為0,但cat生成內容


# cat /proc/version
Linux version 2.6.18-308.8.2.el5.028stab101.1 (root@rhel5-build-x64) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)) #1 SMP Sun Jun 24 20:25:35 MSD 2012
# ls -l /proc/version
-r--r--r-- 1 root root 0 Aug 22 10:07 /proc/version

文件大小報告為0,但它有內容。這是如何運作的?

是因為 /proc 是某種虛擬文件系統?

哪個命令可以顯示文件的確切大小 /proc


3
2017-08-22 02:14


起源


這個問題不適合在那裡,它不是購物或購買建議一:( - hugemeow
但這是一個與linux相關的問題,你知道linux與其他人有點不同,比如windows,linux上有很多話題,但與數字設備和購物推薦無關,也與手機無關,因此將此主題移至超級用戶將是一個錯誤 - hugemeow
最後一次!這不是一個 編程問題。超級用戶是針對操作系統的問題,而不僅僅是購買o0r mp3問題。如果你真的堅持,我可以將其作為一個糟糕的編程問題而投票,並投票將其作為偏離主題關閉。我認為你誤解了 - 用戶在這裡決定什麼是主題,什麼不是,我投了我的投票,因為它不合適。否則你不會說服我,所以你也可以停止嘗試這樣做。 IMO,這是偏離主題的。你顯然不同意,因為你首先在這裡發布了它。討論。 :-) - Ken White
Ken,procfs是Linux ABI的核心部分,了解它的工作原理是linux編程的一個重要部分。問題很簡單,但不是一個初學程序員要求的不合適的問題。另一方面,這種荒謬的火焰戰是一種恥辱,你應該為自己感到羞恥。 - Andy Ross
@AndyRoss:你是那個看到火焰戰爭的人。我看到有人(正確地,毫無疑問)指出問題是Stack Overflow的主題,以及超級用戶的主題。 hugemeow似乎誤解了超級用戶是什麼,並且在技術上有問題,對新用戶來說當然可以,但他/她應該謙虛,以便在尋求幫助時實現這一點。 - Daniel Andersson


答案:


這是因為你在 proc 文件系統。查看更多信息 procfs是什麼

/ proc / version,包含Linux內核版本,分發編號,gcc版本號(用於構建內核)以及與當前運行的內核版本相關的任何其他相關信息

那些不是真實的文件。這是一種將流程信息顯示為文件層次結構的便捷方式。


編輯:

我知道這是不真實的,但如果我想知道它的大小,我該怎麼辦?

你沒有得到它 ls,但你可以嘗試使用 wc

# wc -c /proc/version
138 /proc/version

8
2017-08-22 02:15



我知道這是不真實的,但如果我想知道它的大小,我該怎麼辦? - hugemeow
@hugemeow我編輯了我的答案 - Jon Lin
我想要一個可以告訴我文件大小的列表,而不僅僅是一個:( - hugemeow
@hugemeow然後使用find: find /proc/ -maxdepth 1 -type f -exec wc -c {} + - Jon Lin
@hugemeow編寫一個腳本並調用它 a那真的很短。 - Jon Lin