日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux常用命令之lsof 、netstat、ipcs、ldd

發(fā)布時間:2025/7/25 linux 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux常用命令之lsof 、netstat、ipcs、ldd 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、lsof

lsof(list open files)是一個列出當(dāng)前系統(tǒng)打開文件的工具。在linux環(huán)境下,任何事物都以文件的形式存在,通過文件不僅僅可以訪問常規(guī)數(shù)據(jù),還可以訪問網(wǎng)絡(luò)連接和硬件。每行顯示一個打開的文件,若不指定條件默認(rèn)將顯示所有進程打開的所有文件。lsof輸出各列信息的意義如下:

#COMMAND:進程的名稱 #PID:進程標(biāo)識符 #USER:進程所有者 #FD:文件描述符,應(yīng)用程序通過文件描述符識別該文件。如cwd、txt等 #TYPE:文件類型,如DIR、REG等 #DEVICE:指定磁盤的名稱 #SIZE:文件的大小 #NODE:索引節(jié)點(文件在磁盤上的標(biāo)識) #NAME:打開文件的確切名稱

?

lsof常用參數(shù)

lsof abc.txt 顯示開啟文件abc.txt的進程 lsof -c abc 顯示abc進程現(xiàn)在打開的文件 lsof -c -p 1234 列出進程號為1234的進程所打開的文件 lsof -g gid 顯示歸屬gid的進程情況 lsof +d /usr/local/ 顯示目錄下被進程開啟的文件 lsof +D /usr/local/ 同上,但是會搜索目錄下的目錄,時間較長 lsof -d 4 顯示使用fd為4的進程

?

1.1? ?字段說明

其中FD 列中的文件描述符

cwd? ?值表示應(yīng)用程序的當(dāng)前工作目錄,這是該應(yīng)用程序啟動的目錄,除非它本身對這個目錄進行更改。

txt? ? ? 類型的文件是程序代碼,如應(yīng)用程序二進制文件本身或共享庫,如上列表中顯示的 /sbin/init 程序。其次數(shù)值表示應(yīng)用程序的文件描述符,這是打開該文件時返回的一個整數(shù)。如上的最后一行文件/dev/initctl,其文件描述符為10。

u? ? ? ? 表示該文件被打開并處于讀取/寫入模式,而不是只讀 ? 或只寫 (w) 模式。同時還有大寫 W 表示該應(yīng)用程序具有對整個文件的寫鎖。該文件描述符用于確保每次只能打開一個應(yīng)用程序?qū)嵗?span style="font-family:Arial;">初始打開每個應(yīng)用程序時,都具有三個文件描述符,從 0 到 2,分別表示標(biāo)準(zhǔn)輸入、輸出和錯誤流。所以大多數(shù)應(yīng)用程序所打開的文件的 FD 都是從 3 開始。與 FD 列相比,

?

Type 列則比較直觀。

文件和目錄分別稱為 REG 和 DIR。CHR 和 BLK,分別表示字符和塊設(shè)備;或者 UNIX、FIFO 和 IPv4,分別表示 UNIX 域套接字、先進先出 (FIFO) 隊列和網(wǎng)際協(xié)議 (IP) 套接字。

?

lsof 常見的用法是查找應(yīng)用程序打開的文件的名稱和數(shù)目。可用于查找出某個特定應(yīng)用程序?qū)⑷罩緮?shù)據(jù)記錄到何處,或者正在跟蹤某個問題。

例如,linux限制了進程能夠打開文件的數(shù)目。通常這個數(shù)值很大,所以不會產(chǎn)生問題,并且在需要時,應(yīng)用程序可以請求更大的值(直到某個上限)。

如果你懷疑應(yīng)用程序耗盡了文件描述符,那么可以使用 lsof 統(tǒng)計打開的文件數(shù)目,以進行驗證。

lsof |wc -l

?

?1.2? 常用例子說明

1)查找指定端口號的進程信息

-i //顯示所有打開的端口 [ztao@MongoDB ~]$ lsof -i:6379 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME redis-ser 5341 ztao 4u IPv6 23457 0t0 TCP *:6379 (LISTEN) redis-ser 5341 ztao 5u IPv4 23459 0t0 TCP *:6379 (LISTEN) redis-ser 5341 ztao 6u IPv4 23533 0t0 TCP localhost:6379->localhost:6633 (ESTABLISHED) redis-ser 5341 ztao 7u IPv4 23535 0t0 TCP localhost:6379->localhost:6634 (ESTABLISHED) redis-ser 5341 ztao 8u IPv4 23538 0t0 TCP localhost:6379->localhost:6635 (ESTABLISHED) redis-ser 5341 ztao 9u IPv4 23540 0t0 TCP localhost:6379->localhost:6636 (ESTABLISHED) redis-ser 5341 ztao 10u IPv4 23839 0t0 TCP localhost:6379->localhost:6747 (ESTABLISHED) redis-ser 5341 ztao 11u IPv4 23842 0t0 TCP localhost:6379->localhost:6748 (ESTABLISHED) newsProvi 5349 ztao 6u IPv4 23530 0t0 TCP localhost:6633->localhost:6379 (ESTABLISHED) newsProvi 5349 ztao 7u IPv4 23532 0t0 TCP localhost:6634->localhost:6379 (ESTABLISHED) newsProvi 5349 ztao 8u IPv4 23536 0t0 TCP localhost:6635->localhost:6379 (ESTABLISHED) newsProvi 5349 ztao 9u IPv4 23539 0t0 TCP localhost:6636->localhost:6379 (ESTABLISHED) newsDistr 5456 ztao 12u IPv4 23838 0t0 TCP localhost:6747->localhost:6379 (ESTABLISHED) newsDistr 5456 ztao 13u IPv4 23841 0t0 TCP localhost:6748->localhost:6379 (ESTABLISHED)

?

2. 列出某個程序所打開的文件信息

lsof -c mysql

備注: -c 選項將會列出所有以mysql開頭的程序的文件,

其實你也可以寫成?lsof | grep mysql,?但是第一種方法明顯比第二種方法要少打幾個字符了

?

3. 通過某個進程號顯示該進行打開的文件

lsof -p 1972

?

4.查找誰在使用某個文件

可以查看 在使用某個目錄的的程序的相關(guān)信息

這里可以看到 ?smbd(samba服務(wù))在使用 /home/james目錄

[root@centos1?src]#?lsof?/home/james/

COMMAND??PID?USER???FD???TYPE?DEVICE?SIZE/OFF????NODE?NAME

smbd????1972?root??cwd????DIR??253,2?????4096?2093057?/home/james

smbd????1975?root??cwd????DIR??253,2?????4096?2093057?/home/james

nmbd????1981?root??cwd????DIR??253,2?????4096?2093057?/home/james

smbd????6191?root??cwd????DIR??253,2?????4096?2093057?/home/james

?

5、列出某個用戶打開的所有文件

[root@centos1?src]#?lsof?-u?james

?

?

二、 IPCS

pcs是一個uinx/linux的命令。用于報告系統(tǒng)的消息隊列、信號量、共享內(nèi)存等

ipcs?-a??是默認(rèn)的輸出信息?打印出當(dāng)前系統(tǒng)中所有的進程間通信方式的信息

ipcs?-m??打印出使用共享內(nèi)存進行進程間通信的信息

ipcs?-q???打印出使用消息隊列進行進程間通信的信息

ipcs?-s??打印出使用信號進行進程間通信的信息?

?

?

ldd查看動態(tài)庫依賴

?

[ztteng@ztteng boost]$ ldd threadlinux-gate.so.1 => (0x00151000)libboost_thread.so.1.55.0 => /usr/local/lib/libboost_thread.so.1.55.0 (0x009fe000)libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00cd7000)libm.so.6 => /lib/libm.so.6 (0x007d3000)libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00cb1000)libc.so.6 => /lib/libc.so.6 (0x0061d000)libboost_system.so.1.55.0 => /usr/local/lib/libboost_system.so.1.55.0 (0x00b0c000)libpthread.so.0 => /lib/libpthread.so.0 (0x007b6000)librt.so.1 => /lib/librt.so.1 (0x00814000)/lib/ld-linux.so.2 (0x005f7000)

?

總結(jié)

以上是生活随笔為你收集整理的linux常用命令之lsof 、netstat、ipcs、ldd的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。