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 / 问题 / 29598
Accepted
His
His
Asked: 2009-06-23 00:19:10 +0800 CST2009-06-23 00:19:10 +0800 CST 2009-06-23 00:19:10 +0800 CST

在以下情况下用于找出 Linux 机器的总 CPU 和内存使用情况的最佳命令

  • 772

这些几乎都是新手提出的问题。(我已经查看了其他相关的问题和答案,但似乎都没有完全回答我自己的原始问题。)

我需要在 Java 程序中远程检索、解析和报告 Linux 机器的 CPU 和内存使用情况。这些应该在两个单独的命令而不是一个命令中完成,以将它们解耦,以便将来需要更改一个命令时更容易。

所以我的问题是:

  • 为此目的,用于检索计算机的总 CPU 使用率的最佳命令是什么?
  • 为此目的检索机器的总内存使用量的最佳命令是什么?

最好,我的意思是命令的输出是:

  • 标准(独立/在 Linux 风格中应该是相同的——不是强制性的,但会很好。目标操作系统虽然是 RHEL 5)
  • 可以很容易地解析(不会与我不感兴趣的其他信息混杂在一起)。

谢谢!

central-processing-unit linux memory
  • 8 8 个回答
  • 8976 Views

8 个回答

  • Voted
  1. Dan Carley
    2009-06-23T01:13:52+08:002009-06-23T01:13:52+08:00

    我建议不要重新发明轮子,而是在您打算监控的系统上使用 SNMP 守护程序,并在 Java 应用程序中使用 SNMP 客户端库。

    您希望监控的两个项目都包含在net-snmp的标准 MIB/OID 中。

    然后,您不必担心从其他实用程序的输出中提取您需要的变量,或者您将如何安全地传输该信息(可能是远程 shell)的可移植性。

    • 5
  2. Best Answer
    pauliephonic
    2009-06-23T00:47:42+08:002009-06-23T00:47:42+08:00

    top 命令显示内存和 CPU 信息以及其他统计信息。

    如果您想从脚本或应用程序中调用它,请使用“-n 1”标志,这样它就不会在交互模式下运行。

    例如让 CPU 使用率运行

     top -n 1 | grep "Cpu"
     (result)
     Cpu(s):  1.6%us,  1.8%sy,  0.0%ni, 92.1%id,  0.6%wa,  0.1%hi,  3.8%si,  0.0%st
    

    内存使用调用

    top -n 1 | grep "Mem"
    (result)
    Mem:   1035240k total,   773088k used,   262152k free,   160348k buffers
    
    • 1
  3. wzzrd
    2009-06-23T01:26:06+08:002009-06-23T01:26:06+08:00

    如果您真的必须解析控制台命令的输出,您可能希望尽可能少地使用管道和 grepping。

    可能具有您可以解析的最简单输出的命令是 vmstat。

    $ vmstat
    procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
     4  0    420  54512  20408 1504148    0    0  1193   994  530 1397 10  6 76  7
    

    就内存而言,请注意上面的“空闲”是空闲的内存量,没有将缓冲区和缓存计算为空闲,因此您可能希望将 buff 和缓存添加到 free 以获得“真正的”空闲量MiB 的数量(即直接可供系统使用的物理内存)。

    在 CPU 之下,us、sy、id 和 wa 值对应于 'user'、'system'、'idle' 和 'iowait'。与列出的所有其他工具一样,vmstat 会向您显示单个时间点的状态。一定要经常刷新;-)

    • 1
  4. Francesco Abeni
    2009-06-23T00:41:06+08:002009-06-23T00:41:06+08:00

    答案的“解析”部分无论如何都涉及使用标准输出和字符串格式,除非您使用 SNMP(如果它是一个选项)可以为您提供更多信息。

    除此之外,“free”命令显示有关已用内存的数字,“df”显示磁盘使用情况,“top”显示不同值。

    • 0
  5. Rajat
    2009-06-23T00:49:39+08:002009-06-23T00:49:39+08:00

    最佳

    系统统计

    这两个命令都会从 u H/W 状态“top”中给出最好的结果,最好使用 RHEL

    • 0
  6. wazoox
    2009-06-23T02:38:29+08:002009-06-23T02:38:29+08:00

    “真正的 Unix 方式”是使用可用的系统信息命令制作脚本:free、ps、w、vmstat、iostat、ifstat、netstat 等(提示:不要使用“top”,它是用于交互使用的,该死!)

    “Java 方式”是使用库,首先自然会想到 SNMP,但它可能太大了,无法破解这么小的坚果。

    所以 :

    • 如果您的应用程序不会扩展太多,请使用简单的方法,使用“ps”、“w”、解析“/proc/meminfo”等。
    • 如果您的应用程序应该超越这个基本需求,请使用 SNMP。
    • 0
  7. MathewC
    2009-06-23T04:56:08+08:002009-06-23T04:56:08+08:00

    我喜欢htop它的颜色和排序

    • 0
  8. Dave Cheney
    2009-06-24T02:20:59+08:002009-06-24T02:20:59+08:00

    如果您的收集器是用 Java 编写的,您可以考虑将Sigar集成到您的应用程序中。Sigar 是 Hyperic 监控工具用来收集操作系统统计信息的库。

    • 0

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

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

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

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

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

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

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +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