Linux操作系统下常用命令集锦【一】查询进程对应信息Lsof命令详解

时间:2022-03-19 17:01:01

问题引出:配置单机版的hadoop2.6.0后使用jps没有jobtracker和tasktracker ?

解决方法:配完后使用jps查看,发现总是有一些没有启动,非常郁闷,在多番研究后发现有两个原因:一个是在/tmp目录下有以前使用2.02版本留下的文件没有删除,删除/tmp下所有文件即可;二个是因为端口被占用了,先用lsof查找对应端口是否被占用,若被占用可以用kill命令杀死该进程。    

      一般root用户才能执行lsof命令,普通用户可以看见/usr/sbin/lsof命令,但是普通用户执行会显示“permission denied”

      我总结一下lsof指令的用法:
      lsof abc.txt 显示开启文件abc.txt的进程;
      lsof -i :22 知道22端口现在运行什么程序;(常用)
      lsof -c abc 显示abc进程现在打开的文件;
      lsof -g gid 显示归属gid的进程情况;
      lsof +d /usr/local/ 显示目录下被进程开启的文件;
      lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长;
      lsof -d 4 显示使用fd为4的进程 www.2cto.com ;
      lsof -i 用以显示符合条件的进程情况:语法: lsof -i[46] [protocol][@hostname|hostaddr][:service|port](46 --> IPv4 or IPv6;protocol --> TCP or UDP;hostname --> Internet host name;hostaddr --> IPv4位置;service --> /etc/service中的 service name (可以不只一个);port --> 端口号 (可以不只一个))例子: TCP:25 - TCP and port 25;

@1.2.3.4 - Internet IPv4 host address 1.2.3.4;tcp@ohaha.ks.edu.tw:ftp - TCP protocol hosthaha.ks.edu.tw  service name:ftp。

      lsof -n 不将IP转换为hostname,缺省是不加上-n参数;

      lsof -p 12 看进程号为12的进程打开了哪些文件;
      lsof +|-r [t] 控制lsof不断重复执行,缺省是15s刷新,-r,lsof会永远不断的执行,直到收到中断信号。+r,lsof会一直执行,直到没有档案被显示。例子:不断查看目前ftp连接的情况:lsof -i tcp@ohaha.ks.edu.tw:ftp -r
      lsof -s 列出打开文件的大小,如果没有大小,则留下空白

      lsof -u username 以UID,列出打开的文件 www.2cto.com


参考资料:http://www.2cto.com/os/201205/131278.html

                    http://blog.csdn.net/lawrencesgj/article/details/8292780