lsof命令

lsof, LiSt Opened Files, 列出打開的文件, 聽起來很簡單的樣子. 但想*nix中很多其他工具一樣, lsof把這件簡單的事情做到了爐火純青. 因為Unix認為”一切皆文件”, 那么”打開的文件”就不僅僅是傳統意義上打開的文件了, 還可以是網絡/Unix域套接字, 匿名/具名管道, 共享庫文件, 目錄文件, 設備文件等等. 很多場景下, 查看進程或系統打開的文件會給調試帶來極大的幫助. 下面簡單地介紹lsof常被使用的功能選項.

lsof : 簡單地執行lsof會列出當前系統中所有被打開的文件, 但為了看到完整的信息, 通常需要具有root權限;

lsof -u dutor : 列出用戶dutor打開的文件, 可指定多個用戶, 默認是OR的關系;

lsof -c tair : 列出名稱以tair開頭的進程打開的文件, c for command, 可指定多個;

lsof -c /^t.*r$/ : 列出名稱以t開頭, r結尾的進程打開的文件;

lsof -p 12315 : 列出進程號為12315的進程打開的文件, 可指定多個;

lsof server.log : 列出打開server.log文件的進程, 可指明多個文件;

lsof . : 列出打開當前目錄的進程;

lsof +D . : 遞歸地列出當前目錄中被打開的文件, 當然也可以lsof | grep pwd;

lsof -i : 列出打開的套接字;

lsof -i tcp : 列出打開的tcp套接字;

lsof -i :5198 : 列出打開5198端口的進程;

lsof -i :ssh : 列出打開22端口的進程;

lsof -i tcp:5198 : 列出打開5198號tcp端口的進程;

lsof -U : 列出打開Unix域套接字的進程;

lsof -d 0-2 : 列出在0到2文件描述符上打開文件的進程;

lsof -d mem : 列出打開映射文件的進程;

lsof -d txt : 列出打開的可執行文件.

還有其他一些非常有用的選項, 可以對lsof的行為進行控制.

lsof -a: 上述功能性選項可以組合使用, 但默認采用OR邏輯列出, -a選項令lsof使用AND邏輯;

lsof -t: 只列出進程號, 可以借此得到特定的進程列表, 以方便對這些進程的自動處理, 比如kill lsof -t -i :5198會殺死所有打開5198端口的進程;

lsof -r [seconds]: -r選項可以讓lsof以一定的時間間隔連續執行, 在監視文件/進程時會非常實用.


sof是系統管理/安全的尤伯工具。我大多數時候用它來從系統獲得與網絡連接相關的信息,但那只是這個強大而又鮮為人知的應用的第一步。將這個工具稱之為lsof真實名副其實,因為它是指“列出打開文件(lists openfiles)”。而有一點要切記,在Unix中一切(包括網絡套接口)都是文件。

有趣的是,lsof也是有著最多開關的Linux/Unix命令之一。它有那么多的開關,它有許多選項支持使用-和+前綴。


wKioL1bovY_yESPNAAAf4CtHd3Y298.png

正如你所見,lsof有著實在是令人驚訝的選項數量。你可以使用它來獲得你系統上設備的信息,你能通過它了解到指定的用戶在指定的地點正在碰什么東西,或者甚至是一個進程正在使用什么文件或網絡連接。

對于我,lsof替代了netstat和ps的全部工作。它可以帶來那些工具所能帶來的一切,而且要比那些工具多得多。那么,讓我們來看看它的一些基本能力吧:

關鍵選項

理解一些關于lsof如何工作的關鍵性東西是很重要的。最重要的是,當你給它傳遞選項時,默認行為是對結果進行“或”運算。因此,如果你正是用-i來拉出一個端口列表,同時又用-p來拉出一個進程列表,那么默認情況下你會獲得兩者的結果。

下面的一些其它東西需要牢記:

  • 默認?: 沒有選項,lsof列出活躍進程的所有打開文件

  • 組合?: 可以將選項組合到一起,如-abc,但要當心哪些選項需要參數

  • -a?: 結果進行“與”運算(而不是“或”)

  • -l?: 在輸出顯示用戶ID而不是用戶名

  • -h?: 獲得幫助

  • -t?: 僅獲取進程ID

  • -U?: 獲取UNIX套接口地址

  • -F?: 格式化輸出結果,用于其它命令。可以通過多種方式格式化,如-F pcfn(用于進程id、命令名、文件描述符、文件名,并以空終止)


獲取網絡信息

正如我所說的,我主要將lsof用于獲取關于系統怎么和網絡交互的信息。這里提供了關于此信息的一些主題:

使用-i顯示所有連接
有些人喜歡用netstat來獲取網絡連接,但是我更喜歡使用lsof來進行此項工作。結果以對我來說很直觀的方式呈現,我僅僅只需改變我的語法,就可以通過同樣的命令來獲取更多信息。

?wKiom1bovTPA4MwkAABDlZQFlf4542.png

使用-i 6僅獲取IPv6流量

wKioL1bovhjxrj3dAAAEO7mBcRI504.png


?僅顯示TCP連接(同理可獲得UDP連接)

?你也可以通過在-i后提供對應的協議來僅僅顯示TCP或者UDP連接信息。

wKioL1bovkmhKIPzAAA3iLJwvao031.png

使用-i:port來顯示與指定端口相關的網絡信息

或者,你也可以通過端口搜索,這對于要找出什么阻止了另外一個應用綁定到指定端口實在是太棒了。

wKioL1bovnizC7LHAAA3qZQaeMw250.png

使用@host來顯示指定到指定主機的連接

這對于你在檢查是否開放連接到網絡中或互聯網上某個指定主機的連接時十分有用。

wKioL1bovqniXK5rAAAfH93CTVE608.png

使用@host:port顯示基于主機與端口的連接

你也可以組合主機與端口的顯示信息。

wKiom1bovljjIEHIAAAfgdsE9WM067.png

找出監聽端口

找出正等候連接的端口。

wKiom1bovo3CS9uuAAAGZTN6QZM397.png

你也可以grep “LISTEN”來完成該任務。

wKiom1bovr7iE9CIAAAabzOtcZQ806.png

找出已建立的連接

你也可以顯示任何已經連接的連接。

wKiom1bovwCQd6qZAAAIK8_hKMY717.png

你也可以通過grep搜索“ESTABLISHED”來完成該任務。

wKioL1bov7vChuduAAAgHTzmYAw141.png

戶信息

你也可以獲取各種用戶的信息,以及它們在系統上正干著的事情,包括它們的網絡活動、對文件的操作等。

使用-u顯示指定用戶打開了什么

wKiom1bov4mAlVJvAAB5zuFUGRk574.png

使用-u user來顯示除指定用戶以外的其它所有用戶所做的事情

wKiom1bov7yBXEjBAABy-V6NfgA767.png

殺死指定用戶所做的一切事情

可以消滅指定用戶運行的所有東西,這真不錯。

wKiom1bov-zj3bIAAAAHZewmegE900.png

命令和進程

可以查看指定程序或進程由什么啟動,這通常會很有用,而你可以使用lsof通過名稱或進程ID過濾來完成這

個任務。下面列出了一些選項:

使用-c查看指定的命令正在使用的文件和網絡連接

wKiom1bowBuROVvIAABGB7C654A834.png

使用-p查看指定進程ID已打開的內容

wKioL1bowQOwnvdEAADnb1D5cZA932.png

-t選項只返回PID

wKioL1bowS7yEkUtAAAHt--0oWY024.png


文件和目錄

通過查看指定文件或目錄,你可以看到系統上所有正與其交互的資源——包括用戶、進程等。

顯示與指定目錄交互的所有一切

wKioL1bowVjTPlqDAAAqhQU0Wmc450.png
顯示與指定文件交互的所有一切

wKiom1bowPeQc5A9AAALIMfCqTs772.png

高級用法

與tcpdump類似,當你開始組合查詢時,它就顯示了它強大的功能。

顯示daniel連接到1.1.1.1所做的一切

wKioL1bowciQMmG5AAAcr6Kdn0o693.png

同時使用-t和-c選項以給進程發送 HUP 信號

wKioL1bowfKzlS9jAAAHKIYp3hI564.png

lsof +L1顯示所有打開的鏈接數小于1的文件

這通常(當不總是)表示某個攻擊者正嘗試通過刪除文件入口來隱藏文件內容。

wKioL1bowiLB4W_7AAAK96bkQuY919.png

顯示某個端口范圍的打開的連接

wKiom1bowcOAa1zmAAAL4iiXkzQ221.png

結尾

本入門教程只是管窺了lsof功能的一斑,要查看完整參考,運行man lsof命令或查看在線版本。






本文轉自027ryan ?51CTO博客,原文鏈接:http://blog.51cto.com/ucode/1751639,如需轉載請自行聯系原作者


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/286788.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/286788.shtml
英文地址,請注明出處:http://en.pswp.cn/news/286788.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

React-引領未來的用戶界面開發框架-讀書筆記(二)

第4章 數據流 由于react的數據流向是單向的(其父節點傳遞到子節點), 因此組件是簡單且易于把握的(它們只需要從父節點獲取props渲染即可) 假如頂層組件的某個prop改變了,react會遞歸地向下遍歷整個組件樹&a…

六、WebApp 二手信息站點頁面制作(IVX 快速開發教程)

六、二手信息站點頁面制作 在了解了基礎可視組件后,我們可以通過這些可視組件進行站點頁面開發,在此以一個二手交易網站站點頁面為例,本教程示例并不是成熟完善的示例,需要各位讀者進行少量完善,示例只是用于功能講解…

【專升本計算機】甘肅省專升本考試公共課計算機填空題考點匯總

甘肅專升本考試公共課計算機填空題考點匯總 Excel 工作簿文件的默認擴展名為 xls 。 Excel 主界面窗口中編輯欄上的 “fx” 按鈕用來向單元格插入函數。 用來給電子工作表中的行號進行編號的是數字。 在 Excel 中,輸入數字作為文本使用時,需要輸入作為先導標記的字符是單引…

Blazor University (25)路由 —— 通過 HTML 導航

原文鏈接&#xff1a;https://blazor-university.com/routing/navigating-our-app-via-html/通過 HTML 導航源代碼[1]鏈接到 Blazor 組件中的路由的最簡單方法是使用 HTML 超鏈接。<a href"/Counter">This works just fine</a>Blazor 組件中的超鏈接會被…

css3選擇器詳解

css3選擇器詳解css中除了早先最早的&#xff0c;ID選擇器&#xff0c;class選擇器一些以外在css3中新加入了新的選擇器&#xff0c;新選擇器的使用大大的方便了我們的編程&#xff0c;下面我就說一些css3的選擇器的使用方法&#xff0c; p 選擇了所有<p>元素的標簽…

OpenReports中文支持方案

此文章在《OpenReports中文支持完全解決方案.doc》的基礎上做優化&#xff0c;并貼出代碼。已測試通過。 一、主要解決的問題 1 頁面顯示支持中文 2 與服務器或數據庫的交互支持中文 3 查詢結果支持中文 4 導出文件名及內容支持中文 二、解決方案及方法 1 …

LeetCode之First Unique Character in a String

1、題目 Given a string, find the first non-repeating character in it and return its index. If it doesnt exist, return -1. Examples: s "leetcode" return 0.s "loveleetcode", return 2. 2、代碼實現 public class Solution {public int firstU…

七、功能性組件與事件邏輯(IVX 快速開發教程)

七、功能性組件與事件邏輯 由于 iVX 極度易用的特性&#xff0c;在 iVX 中開發微信小程序、WebApp、小游戲應用的開發流程大致相同。介紹完基礎可視化組件后通過后臺的服務、數據庫與事件結合即可完成一個應用的開發&#xff1b;此篇將會介紹 iVX 功能性組件與事件&#xff0c…

python assert的作用

一、python assert的作用&#xff1a; 根據Python 官方文檔解釋(https://docs.python.org/3/reference/simple_stmts.html#assert), "Assert statements are a convenient way to insert debugging assertions into a program". 二、一般的用法是&#xff1a; assert…

React-引領未來的用戶界面開發框架-讀書筆記(三)

第8章 DOM操作 多數情況下&#xff0c;React的虛擬DOM足以用來創建你想要的用戶體驗&#xff0c;而根本不需要直接操作底層真實的DOM。然而也有一些例外。最常見的場景包括&#xff1a;需要與一個沒有使用React的第三方類庫進行整合&#xff0c;或者執行一個React沒有原生支持的…

【專升本計算機】甘肅省普通高等學校專升本考試計算機全真模擬試卷(一)

甘肅省普通高等學校專升本考試計算機全真模擬試卷(一) 一、單項選擇題(在每小題給出的四個選項中只有一項是正確的,將正確選項的字母序號填在括號內。每小題1分,共60分。) 1.在Excel中,當單元格中出現#N/A時,表示( )。 A.公式中有Excel不能識別的文本 B.公式或函數…

WPF 基礎控件之 ToggleButton 樣式

其他基礎控件1.Window2.Button3.CheckBox4.ComboBox5.DataGrid 6.DatePicker7.Expander8.GroupBox9.ListBox10.ListView11.Menu12.PasswordBox13.TextBox14.RadioButtonToggleButton 實現下面的效果1&#xff09;ToggleButton來實現動畫&#xff1b;Border嵌套 Ellipse并設置T…

hdu-5781 ATM Mechine(dp+概率期望)

題目鏈接&#xff1a; ATM Mechine Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem DescriptionAlice is going to take all her savings out of the ATM(Automatic Teller Machine). Alice forget how many deposit she has, …

Android之讓手機能識別當前app為瀏覽器類型的APP

1 、問題 我們設置手機默認瀏覽器的時候&#xff0c;我們一般在“設置”頁面&#xff0c;點擊"默認應用管理“&#xff0c;然后再點擊瀏覽器&#xff0c;發現里面沒有當前的app,但是會有一些QQ瀏覽器(前提手機安裝了)或者其它瀏覽器&#xff0c;我們怎么讓系統能識別自己…

反射調用 java bean的set和get方法

v一、使用java.beans.PropertyDescriptor import java.beans.IntrospectionException; import java.beans.PropertyDescriptor; import java.lang.reflect.Field; import java.lang.reflect.Method;public class PropertyUtil {private static final String SET_PREFIX "…

八、后臺與數據庫(IVX 快速開發教程)

八、后臺與數據庫 在 iVX 中 數據庫 作為數據存儲倉庫&#xff0c;通過 數據庫 可以永久性存儲存儲數據&#xff0c;而 后臺服務 起到數據傳輸作用&#xff0c;將 數據庫 的數據傳輸到前臺頁面之中&#xff0c;頁面再使用這些數據。 文章目錄八、后臺與數據庫8.1.1 數據庫添加…

React-引領未來的用戶界面開發框架-讀書筆記(四)

第10章 動畫 動畫可以讓用戶體驗變得更加流暢自然&#xff0c;而React的TransitionGroup插件配合CSS3可以讓我們在項目中整合動畫效果的變得易如反掌。 通常情況下&#xff0c;瀏覽器中的動畫都擁有一套極其命令式的API&#xff0c;你需要選擇一個元素并主動移動它或者改變它的…

Android Studio開發環境搭建準備

Android Studio 是一個Android開發環境&#xff0c;基于IntelliJ IDEA. 類似 Eclipse ADT&#xff0c;Android Studio 提供了集成的 Android 開發工具用于開發和調試。 Android Studio開發環境搭建前&#xff0c;我們需要進行安裝前的準備工作&#xff0c;本篇以在Windows 7平臺…

管理中眼鏡蛇效應

這個世界的事物經常會很奇怪。當你做了一個出發點很好的決定后&#xff0c;結果未必是向你預期的方向發展&#xff0c;甚至適得其反。作為企業/組織/團隊的管理者&#xff0c;經常會在實際管理中&#xff0c;制定了錯誤的績效激勵辦法&#xff0c;使得整體活動走向與初始激勵目…