Linux
ls 中的未知文件類型
一般來說,文件類型在輸出中顯示為未知 (
?
)的原因是什麼?ls
請參閱文件的第一位
/sbin/start-stop-daemon
,它應該指示-
“正常文件”,而不是顯示?
為“未知”。ts7500:~# ls -alh /sbin/s* -rwxr-xr-x 1 root root 52K Apr 29 2008 /sbin/sfdisk -rwxr-xr-x 1 root root 875 Dec 6 2009 /sbin/shadowconfig -rwxr-xr-x 1 root root 12K Apr 19 2010 /sbin/showmount -rwxr-xr-x 1 root root 18K Aug 12 2008 /sbin/shutdown -rwxr-xr-x 1 root root 28K Nov 16 2008 /sbin/slattach -rwxr-xr-x 1 root root 12K Apr 19 2010 /sbin/sm-notify -rwxr-xr-x 1 root root 58K Jul 27 2008 /sbin/ss ?rwsrwsrwt 1 65535 root 4.0G Dec 31 1969 /sbin/start-stop-daemon -rwxr-xr-x 1 root root 19K Aug 12 2008 /sbin/startpar -rwxr-xr-x 1 root root 9.8K Aug 12 2008 /sbin/sulogin lrwxrwxrwx 1 root root 6 Jun 9 2011 /sbin/swapoff -> swapon -rwxr-xr-x 1 root root 17K Apr 29 2008 /sbin/swapon -rwxr-xr-x 1 root root 11K Aug 6 2009 /sbin/sysctl
鑑於您
start-stop-daemon
的大小為 4GB,日期為 1969 年 12 月 31 日,我懷疑您的文件系統可能已損壞…sudo touch /forcefsck
然後重新啟動以檢查您的文件系統。
此處的輸出中的問號
ls
來自filetype_letter
數組(在 GNU 中ls
):/* Display letters and indicators for each filetype. Keep these in sync with enum filetype. */ static char const filetype_letter[] = "?pcdb-lswd";
這對應於
C_ORPHAN
:#define FILETYPE_INDICATORS \ { \ C_ORPHAN, C_FIFO, C_CHR, C_DIR, C_BLK, C_FILE, \ C_LINK, C_SOCK, C_FILE, C_DIR \ }
和
unknown
在filetype
enum
, 和 是未知類型文件的預設值:/* Classify a file of some other type as C_ORPHAN. */ type = C_ORPHAN;
(
ls
實現可以自由地將自己的字元添加到POSIX 定義的字元中。)