[标签]: 文件被占用无法删除 文件被谁使用 lsof和fuser的用法 文件删除了磁盘不回复 df -h和各个目录大小不一致
问题详情的描述或方案目标的预期:
服务器管理中经常遇到某个文件无法删除,因为被其他进程占用着;而有些时候,我们想删掉某个东西,又怕有进程正在用着。。。
【解决方案】
方法一 使用lsof命令:lsof FILENAME 下面看示例
[elk@iZ2ze3blde0ge8qv9kc1o6Z bin]$ lsof nohup.out
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 11373 elk 1w REG 253,1 3768171536 3544722 nohup.out
java 11373 elk 2w REG 253,1 3768171536 3544722 nohup.out
方法二 使用fuser命令:fuser FILENAME 下面看示例
[elk@iZ2ze3blde0ge8qv9kc1o6Z bin]$ fuser nohup.out
/home/elk/work/item-install/kafka-manager-1.3.3.7/bin/nohup.out: 11373
还有一个场景lsof很好用的,就是处理磁盘告警的时候,明明已经删掉了很多东西,比如日志文件,但是df -h看磁盘空间就是不恢复。这是因为还有相关进程没结束,所以没释放,可以使用该命令查询: lsof | grep deleted
总结: 简单而有效的方法才能写出最好的shell.