日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

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

一、lsof

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

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

?

lsof常用參數

lsof abc.txt 顯示開啟文件abc.txt的進程 lsof -c abc 顯示abc進程現在打開的文件 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? ?值表示應用程序的當前工作目錄,這是該應用程序啟動的目錄,除非它本身對這個目錄進行更改。

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

u? ? ? ? 表示該文件被打開并處于讀取/寫入模式,而不是只讀 ? 或只寫 (w) 模式。同時還有大寫 W 表示該應用程序具有對整個文件的寫鎖。該文件描述符用于確保每次只能打開一個應用程序實例。初始打開每個應用程序時,都具有三個文件描述符,從 0 到 2,分別表示標準輸入、輸出和錯誤流。所以大多數應用程序所打開的文件的 FD 都是從 3 開始。與 FD 列相比,

?

Type 列則比較直觀。

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

?

lsof 常見的用法是查找應用程序打開的文件的名稱和數目。可用于查找出某個特定應用程序將日志數據記錄到何處,或者正在跟蹤某個問題。

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

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

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.查找誰在使用某個文件

可以查看 在使用某個目錄的的程序的相關信息

這里可以看到 ?smbd(samba服務)在使用 /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的命令。用于報告系統的消息隊列、信號量、共享內存等

ipcs?-a??是默認的輸出信息?打印出當前系統中所有的進程間通信方式的信息

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

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

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

?

?

ldd查看動態庫依賴

?

[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)

?

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。