一般に、ファイルタイプが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
array (in 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で定義 。)