Linux命令學習
1. 查看動態庫
1.1. readlink
選項 |
作用 |
實例 |
-f |
簡單地說,就是一直跟隨符號鏈接,直到直到非符號鏈接的文件位置,限制是最後必須存在一個非符號鏈接的文件 |
|
-e |
遞歸跟隨給出文件名的所有符號鏈接以標準化,所有組件都必須存在 |
|
-m |
遞歸跟隨給出文件名的所有符號鏈接以標準化,但不對組件存在性作出要求 |
|
1.2. readelf
選項 |
作用 |
實例 |
-h |
顯示文件的ELF Header的文件頭信息 |
|
-l |
顯示文件的Program Header Table中的每個Prgram Header Entry的信息(如果有) |
|
-S |
顯示文件的Section Header Table中的每個Section Header Entry的信息(如果有) |
|
-d |
顯示文件中的Dynamic Section的信息(如果有) |
|
|
|
|
1.3. ldd
- 簡介
列出一個程序所需的所有動態庫,默認情況下,/etc/ld.so.conf 文件中包含有默認的共享庫搜索路徑。
- 用法
選項 |
作用 |
-d |
執行符號重部署,並報告缺少的目標對象 |
-r |
對目標對象和函數執行重新部署,並報告缺少的目標對象和函數 |
-u |
打印不需要鏈接的庫 |
-v |
打印所有信息 |
1.4. nm
- 簡介
nm命令主要是用來列出某些文件中的符號,說白了就是一些函數和全局變量等
- 用法
選項 |
作用 |
實例 |
無 |
查看導出函數 |
|
1.5. ln
- 簡介
爲某一個文件在另外一個位置建立一個同步的鏈接。當我們需要在不同的目錄,用到相同的文件時,我們不需要在每一個需要的目錄下都放一個必須相同的文件,我們只要在某個固定的目錄,放上該文件,然後在 其它的目錄下用ln命令鏈接(link)它就可以,不必重複的佔用磁盤空間。
- 語法
ln [參數][源文件或目錄][目標文件或目錄]
- 用法
參數 |
作用 |
實例 |
-b |
刪除,覆蓋以前建立的鏈接 |
|
-d |
允許超級用戶製作目錄的硬鏈接 |
|
-f |
強制執行 |
|
-i |
交互模式,文件存在則提示用戶是否覆蓋 |
|
-n |
把符號鏈接視爲一般目錄 |
|
-s |
軟鏈接(符號鏈接) |
|
-v |
顯示詳細的處理過程 |
|
1.6. objdump
選項 |
作用 |
實例 |
-S |
查看彙編源代碼信息 |
|
-x |
以某種分類信息的形式把目標文件的數據組成輸出;<可查到該文件的的所有動態庫> |
|
2. 查看進程
2.1. lsof
- 簡介
列出當前進程打開的文件
- 語法
lsof (選項) (參數)
lsof (參數)
- 用法
選項 |
作用 |
不加參數 |
就會打開所有被打開的文件 |
直接跟文件名 |
查看誰正在使用某個文件 |
+D 路徑 |
遞歸查看某個目錄的文件信息 |
-u username |
列出某個用戶打開的文件信息 |
-c mysql |
列出某個用戶打開的文件信息 |
-c mysql -c apache |
列出多個程序多打開的文件信息 |
-u test -c mysql |
列出某個用戶以及某個程序所打開的文件信息 |
lsof -u ^root |
列出除了某個用戶外的被打開的文件信息 |
-p pid |
通過某個進程號顯示該進行打開的文件 |
-p pid,pid,pid |
列出多個進程號對應的文件信息 |
-i |
列出所有的網絡連接 |
-i tcp |
列出所有tcp 網絡連接信息 |
-i :3306 |
列出誰在使用某個端口 |
-i tcp:80 |
特定的tcp端口 |
2.2. pidof
- 簡介
根據進程名稱獲取進程pid
- 語法
pidof(選項)(參數)
- 選項
- -s:僅返回一個進程號;
- -c:僅顯示具有相同“root”目錄的進程;
- -x:顯示由腳本開啓的進程;
- -o:指定不顯示的進程ID。
- 效果
3. 安裝軟件
3.1. 安裝程序源碼
sudo apt-get source fcitx-frontend-qt4
3.2. 安裝程序所有依賴源碼
sudo apt-get build-dep fcitx-frontend-qt4
4. 文件查找
5. makefile
1. make時顯示程序要鏈接的庫文件
make VERBOSE=1
2.
3.
make時顯示鏈接的庫文件
git diff >> sss.patch
git apply sss.patch
xargs
參考
lsof 命令參考博客