【Linux】lsof查看被打开的文件
2012-04-16 16:51
441 查看
今天一同事说文件系统/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
$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
相关文章推荐
- 利用lsof去查看Unix/Linux进程打开了哪些文件
- 【识记】linux查看打开文件的命令–lsof
- linux命令 — lsof 查看进程打开哪些文件 或者 查看文件给哪个进程使用-zt
- Linux lsof命令:查看进程打开哪些文件、查看文件被哪些进程打开
- linux命令 — lsof 查看进程打开那些文件 或者 查看文件给那个进程使用
- linux命令之查看进程运行动态库依赖及打开文件-lsof
- linux查看打开文件的命令–lsof
- Linux lsof 命令查看进程打开的文件
- linux命令 — lsof 查看进程打开哪些文件 或者 查看文件给哪个进程使用-zt
- linux查看打开文件的命令–lsof
- 每天一条linux--lsof命令,查看正在打开的文件
- linux命令 — lsof 查看进程打开那些文件 或者 查看文件给那个进程使用
- 001、linux下查看文件打开情况lsof
- linux命令 — lsof 查看进程打开那些文件 或者 查看文件给那个进程使用
- 如何查看进程打开了哪些文件?---linux下的proc文件系统
- Linux下查看进程打开的文件句柄数
- Linux下查看进程打开的文件句柄数
- linux下查看文件打开情况
- Linux查看进程打开多少文件描述符命令-lsof
- lsof 查看打开文件状态