AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 677116
Accepted
James Gan
James Gan
Asked: 2015-03-21 14:47:56 +0800 CST2015-03-21 14:47:56 +0800 CST 2015-03-21 14:47:56 +0800 CST

lsof 在我的服务器上运行很慢

  • 772

我在我的一台 Linux 服务器上运行 lsof 来检查/tmp/incoming_data.txtext3 系统中的一个文件 ( ) 是否被其他程序打开。我的服务器上有很多 TCP 连接。奇怪的是“sudo lsof”的执行大约需要两分钟才能完成,并且在那两分钟内它使用了 99.x% 的 CPU。

我使用的命令是sudo lsof /tmp/incoming_data.txt. 我试过“ fuser ”,它占用了大约相同数量的 CPU 和执行时间。有什么我可以解决这个问题的吗?

linux
  • 3 3 个回答
  • 11982 Views

3 个回答

  • Voted
  1. Zoredache
    2015-03-21T14:52:38+08:002015-03-21T14:52:38+08:00

    传递-n选项以跳过解析 IP 连接的 DNS 名称。这几乎可以肯定是任何放缓中最大的部分。

    • 18
  2. Best Answer
    Daniel t.
    2015-03-21T20:05:57+08:002015-03-21T20:05:57+08:00

    如果您确定可以跳过打开的 TCP 或 UDP 连接,因为您提到它们太多,您可以使用 lsof 的方言特定选项-X。

    lsof -X

    阅读 lsof 的手册页并搜索“-X”以获取详细信息。

    • 8
  3. Juraj Martinka
    2019-10-04T01:06:43+08:002019-10-04T01:06:43+08:00

    我发现这个小 NPM 包在加速 lsof 文件方面做得非常好:https ://www.npmjs.com/package/lsof-mac-fast 。

    我创建了一个包装脚本来使用它:

    node ~/tools/MacOs/lsof.js db.mv.db 1000
    repeating using interval: 1000
    COMMAND  PID  USER   FD   TYPE DEVICE  SIZE/OFF     NODE NAME
    java    7336 jumar  256u   REG    1,4 194465792 53854404 
    db.mv.db
    

    这是我的脚本:

    // https://www.npmjs.com/package/lsof-mac-fast
    var fastLsof = require('lsof-mac-fast');
    
    var myArgs = process.argv.slice(2);
    var fileToCheck = myArgs[0];
    var repeatIntervalMs = myArgs[1];
    // console.log('myArgs: ', myArgs);
    
    function lsofFile(file) {
      fastLsof.lsof([file], function(err, stdout, stderr) {process.stdout.write(stdout)});
    }
    
    if (repeatIntervalMs) {
      // repeat until killed
      // https://javascript.info/settimeout-setinterval
      console.log('repeating using interval: ' + repeatIntervalMs);
      var timerId = setInterval(() => lsofFile(fileToCheck),  repeatIntervalMs);
    } else {
      // just one time
      lsofFile(fileToCheck);
    }
    

    重复间隔可能非常低,例如 10 ms 似乎可以正常工作。

    • 0

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve