linux系統下file命令用於查詢文件類型。平時我們判定一個文件的類型通常是通過該文件的擴展名,而file命令是通過詳細閱讀文件內容,找到特徵量來判定文件類型。下面是file命令的具體內容:
1、file命令判定文件類型的順序:
查詢Device,Directory,Symbolic等特殊文件
查詢壓縮文件
查詢tar文件
基於Magic資料庫文件的查詢
查詢ASCII,UNICODE等類型的文本文件
如果以上都不符合,則文件為二進制文件
2、原理:
file命令通過讀取保存著各種文件特性的資料庫信息和被判定文件進行匹配,資料庫文件保存在/etc/magic、/usr/share/misc/file/magic或其他位置。
0string\177ELFELF
>4byte0invalidclass
>4byte132bit
>5byte1LSB
>>16leshort2executable
3、magic文件由4部分組成:
偏移量
數據類型
值
輸出字元串
magic文件的更多格式信息可以通過manmagic來查看。
以上就是小編今天的分享了,希望可以幫助到大家。
2. linux file命令
file [-beLvz][-f <名稱文件>][-m <魔法數字文件>...][文件或目錄...]
【功能】
辨識文件類型。
【舉例】
*檢查文件類型:
$ file file.cfile /dev/hda
輸入之後,輸出如下:
file.c: C program text
file: ELF 32-bit LSB executable, Intel 80386,version 1,
dynamically linked, notstripped
/dev/hda: block special
*檢查文件類型,不輸出文件名:
$file -b test/
輸入之後,輸出如下:
directory
*檢查文件類型,文件名和結果用,隔開:
$file -F,example/
輸入之後,輸出如下:
example, directory
這里可以指定其它的分割字元。
*檢查塊文件內部,獲得文件系統信息
$ file -s/dev/hda{,1,2,3,4,5,6,7,8,9,10}
輸入之後,輸出如下:
/dev/hda: x86 boot sector
/dev/hda1: Linux/i386 ext2 filesystem
/dev/hda2: x86 boot sector
/dev/hda3: x86 boot sector, extended partition table
/dev/hda4: Linux/i386 ext2 filesystem
/dev/hda5: Linux/i386 swap file
/dev/hda6: Linux/i386 swap file
/dev/hda7: Linux/i386 swap file
/dev/hda8: Linux/i386 swap file
/dev/hda9: empty
/dev/hda10: empty
這里,如果沒有許可權,執行不了。
【描述】
ile 命令的使用. File 命令試圖檢查每個參數以判定文件的類型. 檢查共有三組,按如下順序進行:文件系統檢查,幻數檢查,以及語言檢查. 文件系統檢查成功則輸出文件類型.
輸出的類型一般會包含以下的詞中的一個: text (文件中僅有 ASCII 字元,可以用 ASCII 終端讀此文件,以保證內容的可靠性), executable (文件中保存的是程序編譯後的結果,一些UNIX 內核或其它內核能理解這類文件), 或者 data 表示所有其它類型文件(data 一般為二進制文件或者不可列印的). 但是有的常用的文件格式(如core文件、tar包),雖然也包含二進制數據,卻不屬於這一類如果要修改 /usr/share/magic 或者程序本身, preserve these keywords . 當文件為``text'' 類型時,認為此文件為可讀文件. 不要象在Berkeley環境中那樣做 - 要把``shell commands text''改為``shell script''.
文件系統檢查是建立在對 stat(2) 系統調用結果的分析上的. 程序會分析文件是否為空,或者是否是某種特殊文件. 對於所有可在現有系統上使用的文件類型 (比如套介面文件,動態鏈接文件,命名管道文件(FIFOs) 等),只要它在系統頭文件 sys/stat.h 中已經定義過,就可以被檢查到.
幻數檢查用來檢查文件中是否有特殊的固定格式的數據. 規范的例子如二進制可執行文件(編譯後的程序) a.out ,該文件格式在標准include目錄下的 a.out.h 文件中定義,也可能在 exec.h 中定義. 這些文件在文件開始部分附近的一個特殊位置保存有一個'幻數' , 通過幻數告訴UNIX 操作系統此文件是二進制可執行文件, 和其中包含的其它類型. 幻數的概念已經擴展到數據文件.任何在文件固定位置有與文件類型相關的不變標識符的文件都可以這樣表示. 這些文件中的信息可以從幻數文件 /usr/share/magic 中讀取.
如果文件為 ASCII 文件, file 會試圖檢查它的語言. 語言檢查在文件開始的幾個塊中(任意位置)查找是否有特殊字元串(參看 names.h) .br 指出此文件很可能是 troff(1) 輸入文件, 而關鍵字 struct 指出此文件是C程序. 語言檢查不如前兩組檢查可靠,所以放在最後執行.它也用來檢查一些混合文件(例如 tar(1) 存檔文件)並確定文件是`ascii text'類型還是`data'類型.
選項
-b
不輸出文件名 (簡要模式).
-c
檢查時列印輸出幻數文件的解析結果.常與 -m 一起使用,用來在安裝幻數文件之前調試它.
-f 命名文件
從在參數表前的命名文件中讀出將要檢查的文件名(每行一個文件).要有命名文件,或者至少有一個文件名參數; 如果要檢查標准輸入, 使用``-''作為文件參數.
-m list
指定包含幻數的文件列表.可以是單個文件,也可以是用冒號分開的多個文件.
-n
每檢查完一個文件就強制刷新標准輸出. 僅在檢查一組文件時才有效. 一般在將文件類型輸出到管道時才採用此選項.
-v
列印程序版本並退出.
-z
試圖查看壓縮文件內部信息.
-L
(在支持符號鏈接的系統上)選項顯示符號鏈接文件的原文件, 就像 ls(1) 命令的like-named 選項.
-s
通常, file 只是試圖去檢查在文件列表中那些 stat(2) 報告為正常文件的文件的類型.由於讀特殊文件將可能導致不可知後果,所以這樣可以防止發生問題.使用 -s 選項時 file 命令也將去讀文件列表中的塊特殊文件和字元特殊文件. 一般用於從原始磁碟分區中獲得文件系統類型,此文件為塊特殊文件. 這個選項也導致 file 命令忽略 stat(2) 報告的文件大小,因為在有些系統中原始磁碟分區的大小報告為0.
【其它】
文件
/usr/share/magic - 默認的幻數列表
ENVIRONMENT
環境變數 MAGIC 用於設置默認的幻數文件.
參看
magic(4) - 幻數文件的格式.
strings(1), od(1),hexmp(1) - 檢查非textfile的工具.
標準的一致性
本程序比System V 的FILE命令強大, 幾乎能分辨出所有的模糊語言. 與System V 的FILE命令大部分兼容.本版本能識別更多的magic, 但是,也將因此在有些情況下會產生不同輸出(盡管更加精確).
本版本與System V的顯著區別就是本版本對空格是作為分隔符來處理的, 所以不能在格式字元串中包含空格. 例如,現有幻數文件中的
>10 string language impress (imPRESSdata)
要改為
>10 string language\ impress (imPRESSdata)
另外, 格式字元串中的反斜線符號也要避免.例如,現有幻數文件中的
0 string \begindata Andrew Toolkit document
要改為
0 string \\begindata Andrew Toolkit document
SunOS releases 3.2及以後的版本包括從System V 發展來的 file(1) 命令,但有所擴展.本版本與Sun的file命令差別不大.它包括對 `&' 操作符的擴展,例如,
>16 long&0x7fffffff >0 not stripped
MAGIC DIRECTORY
幻數文件項主要是從USENET收集來的,許多人都為此作出了貢獻. Christos Zoulas (下邊將提到的)將收集附加項信息及修正幻數文件項. 幻數文件項的合並表將會定時發布.
幻數文件項的順序非常重要.不同的系統上的幻數項放的順序可能不同. 如果老的 file 命令使用幻數文件,請將舊的幻數文件改名保存, (如改為 /usr/share/magic.orig) 以便日後做比較用.
3. linux查看當前進程的nofile
您好,在Linux操作系統中,nofile是指當前進程打開的最大文件描述符數量。要查看當前進程的nofile,可以使用以下命令:
1. 使用命令「ulimit -n」可以查看當前用戶的nofile限制。如果該值不夠大,可以使用「ulimit -n <number>」來塵改增加nofile限制。
2. 使用命令「cat /proc/<pid>/limits」可以查看指定進程的nofile限制。其中,<pid>為要查看的進程的進程ID。
3. 使用命令「cat /proc/<pid>/status | grep Nofiles」可以查看指定進程打開的文件描述符數量。其中,<pid>為要查看的進程的進程ID。
4. 使用命令「lsof -p <pid> | wc -l」可以查看指定進程叢李打開的文件數量。其中,<pid>為要查看的進程的進程ID。
以上是查看當前進程派鄭判的nofile的幾種方法,可以根據實際情況選擇合適的方法進行查看。