lsof(list open files)
用于查看当前系统打开文件。
由于在linux环境下,所有事物都是以文件的形式存在,所以通过文件可以访问常规数据、网络连接和硬件。
不管什么事务,操作系统都会分配一个文件描述符,用于应用程序与操作系统之间交互。
文件描述符保存了该应用程序的信息,可通过lsof查看。
常用场景
--根据文件查看进程使用
lsof `which httpd` --那个进程在使用apache的可执行文件
lsof /etc/passwd --那个进程在占用/etc/passwd
--查看目录使用
lsof /data/
lsof +d /data/ --列出该目录下所有文件被使用情况
--根据磁盘查看
lsof /dev/hda6 --那个进程在占用hda6
lsof /dev/cdrom --那个进程在占用光驱
--根据进程查看
lsof -p 30297 --显示那些文件被pid为30297的进程打开
lsof -c sendmail --查看sendmail进程的文件使用情况
lsof -c courier -u ^zahn --显示出那些文件被以courier打头的进程打开,但是并不属于用户zahn
--根据用户查看
lsof -u 1000 --查看uid是100的用户的进程的文件使用情况
lsof -u tony --查看用户tony的进程的文件使用情况
lsof -u ^tony --查看不是用户tony的进程的文件使用情况(^是取反的意思)
--根据端口查看
lsof -i --显示所有打开的端口
lsof -i:80 --显示所有打开80端口的进程
lsof -i UDP@[url]www.akadia.com:123 --显示那些进程打开了到www.akadia.com的UDP的123(ntp)端口的链接
持续查看刷新
lsof -i tcp@ohaha.ks.edu.tw:ftp -r --不断查看目前ftp连接的情况(-r,lsof会永远不断的执行,15秒刷新一次)