網站首頁 編程語言 正文
一、介紹
????????lsof(list open files),是一個列出當前操作系統"打開文件"的工具。在Linux環境下,任何事物都以"文件"的形式存在,通過文件不僅可以訪問常規數據,還可訪問網絡連接和硬件。如TCP/UDP協議文件數據,系統后臺都為該應用程序分配了一個"文件描述符",無論該"文件"的本質如何,該"文件描述符"為應用程序與操作系統之間的交互提供了通用接口,因為該應用程序打開文件的描述符列表提供了大量關于這個應用程序本身的信息,因此通過lsof工具能夠查看這個"文件描述符"列表對系統監測以及排錯將是非常有幫助。
二、lsof使用
????????lsof命令在shell終端即可顯示系統打開的文件,因為lsof需要訪問核心內存和各種文件,所以必須以root用戶的身份運行它(lsof)。
COMMAND ? ? ?PID ? ?TID ? ? ? ? ? USER ? FD ? ? ?TYPE ? ? ? ? ? ? DEVICE ?SIZE/OFF ? ? ? NODE NAME
systemd ? ? ? ?1 ? ? ? ? ? ? ? ? ?root ?cwd ? ? ? DIR ? ? ? ? ? ? ?253,0 ? ? ? 247 ? ? ? ? 64 /
systemd ? ? ? ?1 ? ? ? ? ? ? ? ? ?root ?rtd ? ? ? DIR ? ? ? ? ? ? ?253,0 ? ? ? 247 ? ? ? ? 64 /
systemd ? ? ? ?1 ? ? ? ? ? ? ? ? ?root ?txt ? ? ? REG ? ? ? ? ? ? ?253,0 ? 1632744 ?201424295 /usr/lib/systemd/systemd
systemd ? ? ? ?1 ? ? ? ? ? ? ? ? ?root ?mem ? ? ? REG ? ? ? ? ? ? ?253,0 ? ? 20064 ? ? ? 1606 /usr/lib64/libuuid.so.1.3.0
systemd ? ? ? ?1 ? ? ? ? ? ? ? ? ?root ?mem ? ? ? REG ? ? ? ? ? ? ?253,0 ? ?265600 ? ? 466869 /usr/lib64/libblkid.so.1.1.0
systemd ? ? ? ?1 ? ? ? ? ? ? ? ? ?root ?mem ? ? ? REG ? ? ? ? ? ? ?253,0 ? ? 90248 ? ? ?33899 /usr/lib64/libz.so.1.2.7
systemd ? ? ? ?1 ? ? ? ? ? ? ? ? ?root ?mem ? ? ? REG ? ? ? ? ? ? ?253,0 ? ?157424 ? ? ?57454 /usr/lib64/liblzma.so.5.2.2
systemd ? ? ? ?1 ? ? ? ? ? ? ? ? ?root ?mem ? ? ? REG ? ? ? ? ? ? ?253,0 ? ? 23968 ? ? ?57489 /usr/lib64/libcap-ng.so.0.0.0
systemd ? ? ? ?1 ? ? ? ? ? ? ? ? ?root ?mem ? ? ? REG ? ? ? ? ? ? ?253,0 ? ? 19896 ? ? ?57311 /usr/lib64/libattr.so.1.1.0
systemd ? ? ? ?1 ? ? ? ? ? ? ? ? ?root ?mem ? ? ? REG ? ? ? ? ? ? ?253,0 ? ? 19288 ? ? ?43378 /usr/lib64/libdl-2.17.so
systemd ? ? ? ?1 ? ? ? ? ? ? ? ? ?root ?mem ? ? ? REG ? ? ? ? ? ? ?253,0 ? ?402384 ? ? ?57327 /usr/lib64/libpcre.so.1.2.0
systemd ? ? ? ?1 ? ? ? ? ? ? ? ? ?root ?mem ? ? ? REG ? ? ? ? ? ? ?253,0 ? 2156160 ? ? ?43372 /usr/lib64/libc-2.17.so
systemd ? ? ? ?1 ? ? ? ? ? ? ? ? ?root ?mem ? ? ? REG ? ? ? ? ? ? ?253,0 ? ?142232 ? ? ?43398 /usr/lib64/libpthread-2.17.so
systemd ? ? ? ?1 ? ? ? ? ? ? ? ? ?root ?mem ? ? ? REG ? ? ? ? ? ? ?253,0 ? ? 88720 ? ?2746121 /usr/lib64/libgcc_s-4.8.5-20150702.so.1
三、lsof輸出內容解釋
COMMAND: 進程的名稱
PID: 進程標識符
USER: 進程所有者
FD: 文件描述符,應用程序通過文件描述符識別該文件,如cwd,txt等
TYPE: 文件類型,如DIR(目錄)、REG(文件)、CHR(字符)、BLK(塊設備)等
DEVICE: 指定磁盤的名稱
SIZE: 文件的大小
NODE: 索引節點(文件在磁盤上的標識)
NAME: 打開文件的確切名稱
四、lsof使用案例
4.1 查找誰在使用文件系統
lsof ?test.txt?
4.2 恢復刪除的文件,比如恢復/var/log/messages?
lsof ?|grep ?/var/log/messages |grep ?deleted?
syslogd ? 1283 ? ? ?root ? ?2w ? ? ?REG ? ? ? ?3,3 ?5381017 ? ?1773647 /var/log/messages (deleted)
cat /proc/1283/fd/2 > /var/log/messages?
對于許多的應用程序,尤其是日志和數據庫文件,通過lsof程序命令恢復刪除文件的方法非常有用!
原文鏈接:https://blog.csdn.net/u014674448/article/details/127249887
相關推薦
- 2023-05-15 Bash中test命令的使用_linux shell
- 2022-11-12 c++中string和vector的詳細介紹_C 語言
- 2024-01-28 springboot登錄認證JWT令牌
- 2022-09-02 useEffect支持async及await使用方式_React
- 2024-07-13 Springboot使用注解實現權限校驗
- 2022-05-12 Kotlin 代數/枚舉/密封類
- 2023-10-09 使用Double Toke登錄的優點
- 2023-07-02 如何遠程使用服務器上的Jupyter?notebook_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支