7、使用lsof查看文件信息vim
在unix里面,一切皆文件;而Linux秉承了这一特性,将unix下的工具lsof移植过来得很成功。lsof能够列出被进程所打开的文件的信息。bash
被打开的文件能够是网络
1.普通的文件socket
2.目录 tcp
3.网络文件系统的文件ide
4.字符设备文件 函数
5.(函数)共享库 工具
6.管道,命名管道 url
7.符号连接spa
8.底层的socket字流。网络socket,unix域名socket,用得比较多的用法是lsof -i:端口号,列出谁在使用某个端口,例如:lsof -i :3306,我喜欢用此用法来判断服务到底有没有正常启用。
8、使用fuser查看和杀死相关进程
与lsof –i的用法相法,若是我想查找占用3306端口的程序,则用fuser –n tcp -v 8080,另外,fuser的其它功能也是很强大的,我经常使用的它的两个功能:查看我须要的进程和我要杀死我查到的进程(抚琴煮酒是通常用来解决device is busy的问题)
好比当你想umount光驱的时候,结果系统提示你设备正在使用或者正忙,但是你又找不到到底谁使用了他。这个时候fuser可派上用场了。
- [root@lancy sbin]# eject
- umount: /media/cdrom: device is busy
- umount: /media/cdrom: device is busy
- eject: unmount of `/media/cdrom' failed
- [root@lancy sbin]# fuser /mnt/cdrom
- /mnt/cdrom: 4561c 5382c
- [root@lancy sbin]# ps -ef |egrep '(4561|5382)' |grep -v grep
- root 4561 4227 0 20:13 pts/1 00:00:00 bash
- root 5382 4561 0 21:42 pts/1 00:00:00 vim Autorun.inf
示例中,我想弹出光驱,系统告诉我设备忙着,因而采用fuser命令,参数是你文件或scoket,fuser将查出那些使用了他。4561c,5382c表示目前用两个进程在占用着/mnt/cdrom,分别是4561,5382,进程ID后的字母表示占用资源的方式。