【问题标题】:lsof survival guide [closed]lsof生存指南[关闭]
【发布时间】:2014-01-25 15:20:49
【问题描述】:

lsof 是一个非常强大的用于 unix 系统的命令行实用程序。它列出打开的文件,显示有关它们的信息。由于在 unix 系统上几乎所有内容都是文件,因此 lsof 可以为系统管理员提供大量有用的诊断数据。

使用 lsof 的一些最常见和最有用的方法是什么,以及为此使用了哪些命令行开关?

【问题讨论】:

    标签: unix sysadmin lsof


    【解决方案1】:

    显示与给定port 相关的所有网络:

    lsof -iTCP -i :port
    lsof -i :22
    

    要显示与特定主机的连接,请使用@host

    lsof -i@192.168.1.5
    

    使用@host:port显示基于主机和端口的连接 lsof -i@192.168.1.5:22

    grepping for LISTEN 显示您的系统正在等待连接的端口:

    lsof -i| grep LISTEN
    

    使用-u显示给定用户打开的内容:

    lsof -u daniel
    

    通过-c查看命令正在使用哪些文件和网络连接

    lsof -c syslog-ng
    

    -p 开关可让您查看给定进程 ID 已打开的内容,这有助于了解有关未知进程的更多信息:

    lsof -p 10075
    

    -t 选项仅返回 PID

    lsof -t -c Mail
    

    -t-c 选项一起使用,您可以HUP 进程

    kill -HUP $(lsof -t -c sshd)
    

    您还可以使用 -t-u 来杀死用户打开的所有内容

    kill -9 $(lsof -t -u daniel)
    

    【讨论】:

    • 如果您使用 Ruby,一个好方法是使用作弊 gem。它只是方便的、社区驱动的 CLI,可用于许多实用程序的备忘单(与语言无关)。给它一个try
    【解决方案2】:
    lsof -i :port 
    

    会告诉您哪些程序正在侦听特定端口。

    【讨论】:

    • 它不限于“监听”,所以如果你指定lsof -i :8080 并且你有一堆进程连接到端口 8080 上的代理,你也会得到这些。
    【解决方案3】:

    lsof -i 将提供打开的网络套接字列表。 -n 选项将阻止 DNS 查找,这在您的网络连接缓慢或不可靠时很有用。

    【讨论】:

    • lsof -i向您显示您可以在您的命名空间中访问的套接字(并且通过自省被视为“互联网”套接字,而不仅仅是任何类型的网络)插座)。否则 'sock' 类型的句柄将不会显示在列表中。
    【解决方案4】:
    lsof +D /some/directory
    

    将递归显示目录中打开的所有文件。 +d 仅用于顶层。

    当您对 IO 有较高的等待百分比时,这很有用,与在特定 FS 上的使用相关,并且想要查看哪些进程正在占用您的 io。

    【讨论】:

      【解决方案5】:

      查看正在运行的应用程序或守护程序打开了哪些文件:

      lsof -p pid
      

      其中 pid 是应用程序或守护程序的进程 ID。

      【讨论】:

        【解决方案6】:
        lsof +f -- /mountpoint
        

        列出使用挂载在 /mountpoint 上的文件的进程。对于查找哪些进程正在使用已安装的 USB 记忆棒或 CD/DVD 非常有用。

        【讨论】:

          猜你喜欢
          • 2010-09-09
          • 1970-01-01
          • 2010-11-10
          • 2017-11-26
          • 2015-09-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-06
          相关资源
          最近更新 更多