跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

麒麟OS怎么查看进程打开文件_麒麟OS lsof查看文件占用方法【技巧】

麒麟OS中可用lsof命令定位文件占用进程或查看进程打开资源:一、检查并安装lsof;二、用lsof /path查询文件占用;三、用lsof -p PID查看进程资源;四、用sudo lsof +L1查找已删仍占空间文件;五、用lsof -u/-c按用户或命令筛选。

如果您在麒麟OS系统中需要确认某个文件正被哪个进程使用,或想了解特定进程当前打开了哪些资源,则可能是由于文件被占用导致无法删除、修改或卸载。以下是解决此问题的步骤:

一、确认lsof命令是否已安装

麒麟OS基于Linux内核,多数版本默认预装lsof,但精简版或定制镜像可能未包含该工具。需先验证其可用性,并在缺失时进行安装。

1、打开终端,执行命令检查lsof是否存在及版本信息:

lsof -v

2、若提示

command not found

,则需手动安装:

3、对于麒麟V10(基于Debian/Ubuntu系):

sudo apt-get update && sudo apt-get install lsof

4、对于麒麟V10(基于CentOS/RHEL系):

sudo yum install lsof或sudo dnf install lsof

二、查看指定文件被哪些进程占用

该方法直接定位阻塞操作(如rm、mv、umount)的活跃进程,适用于文件级资源争用场景。

1、在终端中输入:

lsof /path/to/your/file(将/path/to/your/file替换为实际绝对路径)

2、若路径含空格或特殊字符,必须用单引号包裹:

lsof '/home/user/my file.log'

3、如需以普通用户身份查询系统级进程,添加sudo前缀:

sudo lsof /var/log/auth.log

三、查看指定进程打开的所有文件

当已知异常进程PID,需全面审查其资源持有情况(如排查句柄泄漏、诊断应用行为),可使用该方式获取完整文件描述符清单。

1、获取目标进程PID,例如通过:

ps aux | grep nginx

2、执行命令列出该进程所有打开项:

lsof -p 12345(将12345替换为实际PID)

3、如仅需输出PID列表用于脚本处理,追加-t参数:

lsof -p 12345 -t

四、查找已删除但仍被进程持有的文件

此类文件虽从文件系统移除,但因进程未关闭句柄,其磁盘空间持续被占用,常表现为df显示空间未释放。lsof可通过+L1标志识别这类“deleted”状态条目。

1、全局扫描所有已删除但仍在使用的文件:

sudo lsof +L1

2、限定搜索范围至某目录(如/var/log):

sudo lsof +L1 /var/log

3、结合grep快速过滤关键词:

sudo lsof +L1 | grep '.log'

五、按用户或命令名批量筛选打开文件

在多用户环境或服务密集型部署中,需按归属维度快速收敛目标进程集合,避免逐一手动查PID。

1、列出指定用户(如user1)所有打开的文件:

lsof -u user1

2、列出所有名为java的进程所打开的文件:

lsof -c java 3、组合条件:同时限定用户与命令名(如user1运行的python3进程):lsof -u user1 -c python3

相关文章