Linux使用lsof查看文件是否被占用或者端口被占用,bash 一行 if while
lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。如TCP和UDP等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过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的进程
-
$lsof -i //用以显示符合条件的进程情况
-
$lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
-
-
46 --> IPv4 or IPv6
-
protocol --> TCP or UDP
-
hostname --> Internet host name
-
hostaddr --> IPv4地址
-
service --> /etc/service中的 service name (可以不止一个)
-
port --> 端口号 (可以不止一个)
#!/bin/sh
#example
#Find which process /dev/dri/card0 is occupied by
#./find_file.sh /dev/dri/card0
if [ $# -ne 1 ]
then
echo "Incorrect number of parameters, please add a parameter."
echo "example:Find which process /dev/dri/card0 is occupied by"
echo "./find_file.sh /dev/dri/card0"
exit 1
fi
for process in /proc/*
do
if [ ! -e ${process}/fd ]
then
continue
fi
str=`ls -l ${process}/fd | grep "$1"`
if [ -n "$str" ]
then
echo $process >> tt.log
echo $process
fi
done
find_file.sh 查看文件占用 pid
while true; do if [ ! -f "/data/files/upstock_stat_SZ.txt" ]; then echo `date +%Y-%m-%d' '%H:%M:%S.%N`-file no ; fi ; sleep 0.1 ; done
摘抄自网络,便于检索查找。
分类:
old
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
2018-10-10 治愈系课程教材 第二课
2018-10-10 我对交易方法的17点认知
2018-10-10 HotSpot虚拟机
2018-10-10 何为世面?何为见世面?
2018-10-10 WinDbg 之 SOS扩展命令