分类: LINUX
2009-01-21 10:46:52
lsof全名list opened files,也就是列举系统中已经被打开的文件。我们都知道,linux环境中,任何事物都是文件,设备是文件,目录是文件,甚至sockets也是文件。所以,用好lsof命令,对日常的linux管理非常有帮助。以下的说明,大部分内容来自lsof的manual文档。我所做的只是在中文翻译的基础上,进行简单的分类说明,并列举最常用的参数。
一、输出说明 lsof是linux最常用的命令之一,通常的输出格式为: 引用
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME 常见包括如下几个字段:更多的可见manual。 1、COMMAND 默认以9个字符长度显示的命令名称。可使用+c参数指定显示的宽度,若+c后跟的参数为零,则显示命令的全名 2、PID:进程的ID号 3、PPID 父进程的IP号,默认不显示,当使用-R参数可打开。 4、PGID 进程组的ID编号,默认也不会显示,当使用-g参数时可打开。 5、USER 命令的执行UID或系统中登陆的用户名称。默认显示为用户名,当使用-l参数时,可显示UID。 6、FD 是文件的File Descriptor number,或者如下的内容: (这里很难翻译对应的意思,保留英文) 引用
cwd current working directory; Lnn library references (AIX); jld jail directory (FreeBSD); ltx shared library text (code and data); Mxx hex memory-mapped type number xx. m86 DOS Merge mapped file; mem memory-mapped file; mmap memory-mapped device; pd parent directory; rtd root directory; tr kernel trace file (OpenBSD); txt program text (code and data); v86 VP/ix mapped file; 文件的File Descriptor number显示模式有: 引用
r for read access; w for write access; u for read and write access; N for a Solaris NFS lock of unknown type; r for read lock on part of the file; R for a read lock on the entire file; w for a write lock on part of the file; W for a write lock on the entire file; u for a read and write lock of any length; U for a lock of unknown type; x for an SCO OpenServer Xenix lock on part of the file; X for an SCO OpenServer Xenix lock on the entire file; space if there is no lock. 7、TYPE 引用
IPv4 IPv4的包; IPv6 使用IPv6格式的包,即使地址是IPv4的,也会显示为IPv6,而映射到IPv6的地址; DIR 目录 LINK 链接文件 详情请看manual中更多的注释。 8、DEVICE 使用character special、block special表示的设备号 9、SIZE 文件的大小,如果不能用大小表示的,会留空。使用-s参数控制。 10、NODE 本地文件的node码,或者协议,如TCP等 11、NAME 挂载点和文件的全路径(链接会被解析为实际路径),或者连接双方的地址和端口、状态等 二、参数 1、不带额外参数运行 lsof path/filename
显示已打开该目录或文件的所有进程信息 lsof `which httpd`
显示指定命令的信息 2、参见参数 -c w 显示以w开头命令的已打开文件的信息 lsof -c sshd
-p PID 显示指定PID已打开文件的信息 lsof -p 4401
+d dir 依照文件夹dir来搜寻,但不会打开子目录 lsof +d /root
+D dir 打开dir文件夹以及其子目录搜寻 lsof +D /root/
-d s 以FD列的信息进行匹配,可使用3-10,表示范围,3,10表示某些值 lsof -d 3-10
-u 显示某用户的已经打开的文件(或该用户执行程序已经打开的文件) lsof -u root
lsof -u 0 ◎可配合正规表达式使用 表示不包括root用户的信息: lsof -u ^root
-i 监听指定的协议、端口、主机等的网络信息,格式为: 引用
[46][proto][@host|addr][:svc_list|port_list] 例如: lsof -i tcp@192.168.228.244
lsof -i:22 还可以使用一些参数控制显示结果: 引用
-l 禁止将userID转换为登陆名称,即显示UID -n 禁止将IP地址转换为hostname主机文件 -P 不显示端口名称 -g s 从PGID列进行匹配 lsof -g 3-10
3、其他参数 +f 所有路径参数都必须是文件系统,否则不能执行 -f 所有路径参数都将作为普通的文件,例如:"-f -- /"中的/,只会匹配单个/路径,而不会是根目录中的所有文件 +f和-f后都应加上“--”表终结符: lsof -f -- /
+L/-L 打开或关闭文件的连结数计算,当+L没有指定时,所有的连结数都会显示(默认);若+L后指定数字,则只要连结数小于该数字的信息会显示;连结数会显示在NLINK列。 例如:+L1将显示没有unlinked的文件信息;+aL1,则显示指定文件系统所有unlinked的文件信息 -L 默认参数,其后不能跟数字,将不显示连结数信息 lsof +L1
-t 仅打印进程,方便shell脚本调用 lsof -t -c sshd
-F 指定输出那个列,可通过lsof -F?查看 -r 不断执行lsof命令,默认每15秒间隔执行一次 +r 也是不断执行lsof命令,但直到没有接受到文件信息,则停止 ***********************************************************
linux lsof 修改句柄限制(转)
2008-04-10 18:54
|