ÏȽéÉÜһЩÎļþµÄ»ù±¾¸ÅÄî, Îļþʵ¼ÊÉÏÊÇÒ»¸öÖ¸ÏòinodeµÄÁ´½Ó, inodeÁ´½Ó°üº¬ÁËÎļþµÄËùÓÐÊôÐÔ, ±ÈÈçȨÏÞºÍËùÓÐÕß, Êý¾Ý¿éµØÖ·(Îļþ´æ´¢ÔÚ´ÅÅ̵ÄÕâЩÊý¾Ý¿éÖÐ). µ±Äãɾ³ý(rm)Ò»¸öÎļþ, ʵ¼Êɾ³ýÁËÖ¸ÏòinodeµÄÁ´½Ó, ²¢Ã»ÓÐɾ³ýinodeµÄÄÚÈÝ. ½ø³Ì¿ÉÄÜ»¹ÔÚʹÓÃ. Ö»Óе±inodeµÄËùÓÐÁ´½ÓÍêÈ«ÒÆÈ¥, È»ºóÕâЩÊý¾Ý¿é½«¿ÉÒÔдÈëеÄÊý¾Ý.
procÎļþϵͳ¿ÉÒÔÐÖúÎÒÃǻָ´Êý¾Ý. ÿһ¸öϵͳÉϵĽø³ÌÔÚ/proc¶¼ÓÐÒ»¸öĿ¼ºÍ×Ô¼ºµÄÃû×Ö: ÀïÃæ°üº¬ÁËÒ»¸öfd(ÎļþÃèÊö·û)×ÓĿ¼(½ø³ÌÐèÒª´ò¿ªÎļþµÄËùÓÐÁ´½Ó). Èç¹û´ÓÎļþϵͳÖÐɾ³ýÒ»¸öÎļþ, ´Ë´¦»¹ÓÐÒ»¸öinodeµÄÒýÓÃ:
/proc/½ø³ÌºÅ/fd/ÎļþÃèÊö·û
½ÓÏÂÀ´, ÄãÐèÒªÖªµÀ´ò¿ªÎļþµÄ½ø³ÌºÅ(pid)ºÍÎļþÃèÊö·û(fd). ÕâЩ¶¼¿ÉÒÔͨ¹ýlsof¹¤¾ß·½±ã»ñµÃ, lsofµÄÒâ˼ÊÇ¡±list open files, Áгö(½ø³Ì)´ò¿ªµÄÎļþ¡±. È»ºóÄ㽫¿ÉÒÔ´Ó/proc¿½±´³öÐèÒª»Ö¸´µÄÊý¾Ý.
ÏÂÃæ½éÉÜÔÚFedora Core 5ϵͳÉÏʹÓÃlsof»Ö¸´ÎóɾµÄÎļþ:
»·¾³
Ö÷»ú: ʹÓÃ΢ÄÀ¶ÀÁ¢Ö÷»ú, һ̨»ùÓÚvmwareµÄÐéÄâ¶ÀÁ¢Ö÷»ú.
ϵͳ: Fedora Core 5
ÄÚºË: 2.6.16-1.2122_FC5
lsof°æ±¾:
[zhaoke@fedora5 ~]$ /usr/sbin/lsof -v
lsof version information:
revision: 4.77
Ô¤±¸¹¤×÷:
Èç¹ûÄãµÄϵͳûÓа²×°lsof, ¿ÉÒÔ´Ó×÷ÕßÍøÕ¾»òpbone»ñµÃ.
»Ö¸´¹ý³Ì:
Ê×ÏÈ, ÎÒÃÇÐèÒª´´½¨Ò»¸öÎı¾Îļþ, ɾ³ýÈ»ºó»Ö¸´:
[zhaoke@fedora5 ~]$ man lsof | col -b > myfile
È»ºó¿´Ò»ÏÂÎļþÄÚÈÝ:
[zhaoke@fedora5 ~]$ less myfile
Äã¿ÉÒÔ¿´µ½lsofËùÓеÄÎı¾°ïÖúÐÅÏ¢.
ÏÖÔÚ°´Ctrl-ZÍ˳ölessÃüÁî, È»ºóÔÚshellÌáʾ·ûϲ鿴ÎļþÊôÐÔÐÅÏ¢:
[zhaoke@fedora5 ~]$ stat myfile
File: `myfile¡¯
Size: 116549 Blocks: 240 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 492686 Links: 1
Access: (0664/-rw-rw-r-) Uid: ( 505/ zhaoke) Gid: ( 505/ zhaoke)
Access: 2006-11-20 12:59:38.000000000 +0800
Modify: 2006-11-20 12:59:34.000000000 +0800
Change: 2006-11-20 12:59:34.000000000 +0800
ûÎÊÌâ, ¼ÌÐøÏÂÃæ¹¤×÷:
[zhaoke@fedora5 ~]$ rm myfile
[zhaoke@fedora5 ~]$ ls -l myfile
ls: myfile: No such file or directory
[zhaoke@fedora5 ~]$ stat myfile
stat: cannot stat `myfile¡¯: No such file or directory
myfileÎļþɾ³ýÁË.
Õâʱºò, Äã²»ÒªÖÕÖ¹ÈÔÔÚʹÓÃÎļþµÄ½ø³Ì. ÒòΪһµ©ÖÕÖ¹, Îļþ½«ºÜÄѻָ´.
ÏÖÔÚÎÒÃÇ¿ªÊ¼ÕÒ»ØÊý¾Ý, Ê×ÏÈÓÃlsof²é¿´Ò»ÏÂ:
[zhaoke@fedora5 ~]$ lsof | grep myfile
less 9104 zhaoke 4r REG 253,0 116549 492686 /home/zhaoke/myfile (deleted)
µÚÒ»¸ö×ÝÐÐÊǽø³ÌµÄÃû³Æ(ÃüÁîÃû), µÚ¶þ×ÝÐÐÊǽø³ÌºÅ(PID), µÚËÄ×ÝÐÐÊÇÎļþÃèÊö·û(rÒâ˼ÊÇÆÕͨÎļþ), ÏÖÔÚÄãÖªµÀ9104½ø³ÌÈÔÓдò¿ªÎļþ, ÎļþÃèÊö·ûÊÇ4. ÄÇÎÒÃÇ¿ªÊ¼´Ó/procÀïÃæ¿½±´³öÊý¾Ý. Äã¿ÉÄܻῼÂÇʹÓÃcp -a, µ«Êµ¼ÊÉÏûÓÐ×÷ÓÃ, Ä㽫¿½±´µÄÊÇÒ»¸öÖ¸Ïò±»É¾³ýÎļþµÄ·ûºÅÁ´½Ó:
[zhaoke@fedora5 ~]$ ls -l /proc/9104/fd/4
lr-x---- 1 zhaoke zhaoke 64 Nov 20 13:00 /proc/9104/fd/4 -> /home/zhaoke/myfile (deleted)
[zhaoke@fedora5 ~]$ cp -a /proc/9104/fd/4 myfile.wrong
[zhaoke@fedora5 ~]$ ls -l myfile.wrong
lrwxrwxrwx 1 zhaoke zhaoke 29 Nov 20 13:02 myfile.wrong -> /home/zhaoke/myfile (deleted)
[zhaoke@fedora5 ~]$ file myfile.wrong
myfile.wrong: broken symbolic link to `/home/zhaoke/myfile (deleted)¡¯
[zhaoke@fedora5 ~]$ file /proc/9104/fd/4
/proc/9104/fd/4: broken symbolic link to `/home/zhaoke/myfile (deleted)¡¯
È»ºó, ʹÓÃcp¿½±´³öÊý¾Ý:
[zhaoke@fedora5 ~]$ cp /proc/9104/fd/4 myfile.saved
×îºó, È·ÈÏÒ»ÏÂÎļþ:
[zhaoke@fedora5 ~]$ ls -l myfile.saved
-rw-rw-r- 1 zhaoke zhaoke 116549 Nov 20 13:03 myfile.saved
[zhaoke@fedora5 ~]$ man lsof | col -b > myfile.new
[zhaoke@fedora5 ~]$ cmp myfile.saved myfile.new

