【Linux】lsof查看被打开的文件

今天一同事说文件系统/tmp目录下空间用满了,当时du统计目录所有文件的时候去很小。听到这个现象,第一感觉就是应该有大文件被删除,但是这个文件可能依然被其他程序打开,导致这个文件不能被清除。登上服务器使用lsof看了一下,果然如此,具体排查过程如下:

$df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.6G 1.5G 6.7G 18% /
/dev/sda10 784G 325G 420G 44% /u01
/dev/sda5 8.7G 7.9G 407M 96% /tmp
/dev/sda2 15G 2.8G 11G 21% /usr
/dev/sda1 122M 12M 104M 10% /boot
tmpfs 7.9G 4.0K 7.9G 1% /dev/shm

$sudo lsof | grep /tmp | sort -k7 -nr
sleep 18833 peien.htg 1w REG 8,5 8321143673 54 /tmp/netstat.log (deleted)
netstat_2 13571 peien.htg 1w REG 8,5 8321143673 54 /tmp/netstat.log (deleted)

tcprstat 18823 root 2w REG 8,5 43632 49 /tmp/myrt.daemon.log
sh 18822 mysql 2w REG 8,5 43632 49 /tmp/myrt.daemon.log
sh 18822 mysql 1w REG 8,5 43632 49 /tmp/myrt.daemon.log
myrt.pl 26045 mysql 2w REG 8,5 43632 49 /tmp/myrt.daemon.log
myrt.pl 26045 mysql 1w REG 8,5 43632 49 /tmp/myrt.daemon.log
check_age 25298 mysql 2w REG 8,5 22049 33 /tmp/check_agent.log
check_age 25298 mysql 1w REG 8,5 22049 33 /tmp/check_agent.log
mysqld 3784 mysql 6u REG 8,5 15156 13 /tmp/ibH3IFN9 (deleted)

上面lsof输出结果的第二列是PID,倒数第三列是占用空间大小
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
可以看到文件/tmp/netstat.log (deleted)占用7个多G的空间,虽然被删除了,但是还是有进程打开它。

然后,用PID看看是哪个程序占用这个文件:

$ps -ef | grep 13571
51717 13571 1 0 2011 ? 00:15:00 /bin/bash /tmp/netstat_20110829.sh
51717 21456 13571 0 09:40 ? 00:00:00 sleep 10
zhuxu 21458 17014 0 09:40 pts/0 00:00:00 grep 13571

将这个进程KILL掉后,就OK了:

$sudo kill -9 13571
$sudo lsof | grep /tmp | sort -k7 -nr | head
tcprstat 22084 root 2w REG 8,5 49339 49 /tmp/myrt.daemon.log
sh 22083 mysql 2w REG 8,5 49339 49 /tmp/myrt.daemon.log
sh 22083 mysql 1w REG 8,5 49339 49 /tmp/myrt.daemon.log
myrt.pl 26045 mysql 2w REG 8,5 49339 49 /tmp/myrt.daemon.log
myrt.pl 26045 mysql 1w REG 8,5 49339 49 /tmp/myrt.daemon.log
check_age 25298 mysql 2w REG 8,5 24583 33 /tmp/check_agent.log
check_age 25298 mysql 1w REG 8,5 24583 33 /tmp/check_agent.log
mysqld 3784 mysql 6u REG 8,5 15156 13 /tmp/ibH3IFN9 (deleted)
su 17013 root cwd DIR 8,5 4096 2 /tmp
sort 22090 zhuxu cwd DIR 8,5 4096 2 /tmp

$df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.6G 1.5G 6.7G 18% /
/dev/sda10 784G 325G 420G 44% /u01
/dev/sda5 8.7G 56M 8.2G 1% /tmp
/dev/sda2 15G 2.8G 11G 21% /usr
/dev/sda1 122M 12M 104M 10% /boot
tmpfs 7.9G 4.0K 7.9G 1% /dev/shm

--EOF--

 

原文地址: http://chenxu.yo2.cn/articles/lsof.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值