linux中lsof命令 linux的ls命令

Linux lsof命令详解lsof全名list opened files,也就是列举系统中已经被打开的文件 。我们都知道,linux环境中,任何事物都是文件,
设备是文件 , 目录是文件,甚至sockets也是文件 。所以,用好lsof命令,对日常的linux管理非常有帮助 。
lsof是linux最常用的命令之一 , 通常的输出格式为:
引用
常见包括如下几个字段:更多的可见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,或者如下的内容:
(这里很难翻译对应的意思,保留英文)
引用
文件的File Descriptor number显示模式有:
引用
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.显示开启文件/home/oracle/10.2.0/db_1/bin/tnslsnr的进程
2.知道22端口现在运行什么程序
3.显示init进程现在打开的文件
6.依照文件夹/home/oracle来搜寻,但不会打开子目录 , 用来显示目录下被进程开启的文件
显示内容太多了,不显示了
lsof -n 不将IP转换为hostname,缺省是不加上-n参数
关注:
进程调试命令:truss、strace和ltrace
进程无法启动,软件运行速度突然变慢,程序的"SegmentFault"等等都是让每个Unix系统用户头痛的问题,而这些问题都可以通过使用truss、strace和ltrace这三个常用的调试工具来快速诊断软件的"疑难杂症" 。
Linux如何查看端口是否被占用【linux中lsof命令 linux的ls命令】 Linux如何查看端口是否被占用?下面为大家推荐两种检测方法,对Linux系统不熟悉的小伙伴可以看看 。
1、使用lsof命令
lsof是一个非常强大的linux工具,她被用来查找哪些程序使用了那些文件 。在linux系统下 , 基本上所有的东西都可以被当作文件来用 。socket当然也是一种文件了 。所以lsof可以用来查找谁用了某一个端口 。
具体方法:lsof -i :port_number |grep "(LISTEN)"
-i是用来查找和网络相关的文件,":"号是必须的 , 它是标志你查找的是一个端口 。port_number就是你要查找的端口号,譬如你要查找是否 有程序占用了oracle的监听端口1521,就可以使用lsof -i :1521 |grep "(LISTEN)" 。如果有程序已经占用了,那么下面打印的第二个字段就是该程序的进程id,第一个字段是进程的名字 。
如果只有losf -i :port_number可能会查到很多应用程序,但这些程序实际并没有占用你指定的端口,这些端口只是连接到本机器或者别的机器的该端口 。所以要grep "(LISTEN)“ , 因为一个端口只可能被一个程序占用的 , 所以这种方法是可靠的 。

推荐阅读