ls 内の不明なファイルタイプ

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

答え1

ファイルの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で定義

関連情報