Linux

ls 中的未知文件類型

  • October 22, 2016

一般來說,文件類型在輸出中顯示為未知 ( ?)的原因是什麼?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                       \
 }

unknownfiletype enum, 和 是未知類型文件的預設值

         /* Classify a file of some other type as C_ORPHAN.  */
         type = C_ORPHAN;

ls實現可以自由地將自己的字元添加到POSIX 定義的字元中。)

引用自:https://unix.stackexchange.com/questions/317983