c语言实现linux下的top命令来获取cpu利用率_每一个系统管理员都应该知道的30个Linux系统监控工具...

您需要监控Linux服务器性能吗?可以试着使用这些内置命令和一些附加工具。大多数发行版都附带了大量的Linux监控工具。那个经典的工具图本文就不贴了。本文暂且介绍一下最为常用的性能检测和调优工具,您可以使用这些工具来查找性能问题的可能原因。下面讨论的命令是系统分析和调试Linux服务器问题时最基本的一些命令,主要包括如下几个方面:

  1. 找出系统瓶颈
  2. 磁盘(存储)瓶颈
  3. CPU和内存瓶颈
  4. 网络瓶颈。

top – 过程活动监视命令

top命令显示Linux进程。它提供运行系统的动态实时视图,即实际进程的活动。默认情况下,它显示服务器上运行的CPU密集型任务,并每隔五秒钟更新一次列表。

66397fa1bec31641cbd477df1fc08c6d.png

图1. Linux top命令

与top监控工具一起使用的常用热键,下面是一个有用的热键列表:

t - 关闭和打开显示摘要信息。

M- 显示关闭和打开内存信息。

a - 按不同系统资源的顶级使用者对显示进行排序。有助于快速识别系统中需要性能的任务。

F - 进入顶部的交互式配置屏幕。有助于为特定任务设置top。

o - 使您能够交互选择顶部的顺序。

r - 发出renice命令。

k - 发出kill命令。

Z - 打开或关闭颜色/单声道

vmstat – 虚拟内存统计

vmstat命令报告有关进程、内存、分页、块IO、陷阱和CPU活动的信息。

# vmstat 3

输出样例:

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 2540988 522188 5130400 0 0 2 32 4 2 4 1 96 0 0 1 0 0 2540988 522188 5130400 0 0 0 720 1199 665 1 0 99 0 0 0 0 0 2540956 522188 5130400 0 0 0 0 1151 1569 4 1 95 0 0 0 0 0 2540956 522188 5130500 0 0 0 6 1117 439 1 0 99 0 0 0 0 0 2540940 522188 5130512 0 0 0 536 1189 932 1 0 98 0 0 0 0 0 2538444 522188 5130588 0 0 0 0 1187 1417 4 1 96 0 0 0 0 0 2490060 522188 5130640 0 0 0 18 1253 1123 5 1 94 0 0

显示Slab内存利用率

# vmstat -m

获取有关活动/非活动内存页的信息

# vmstat -a

w – 了解谁登录以及他们在做什么

w命令显示有关计算机上的当前用户及其进程的信息。

# w username# w vivek

输出样例:

 17:58:47 up 5 days, 20:28, 2 users, load average: 0.36, 0.26, 0.24USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot pts/0 10.1.3.145 14:55 5.00s 0.04s 0.02s vim /etc/resolv.confroot pts/1 10.1.3.145 17:43 0.00s 0.03s 0.00s w

uptime – 告诉Linux系统运行了多长时间

可以使用uptime命令查看服务器运行了多长时间。当前时间、系统运行时间、当前登录的用户数以及过去1、5和15分钟的系统平均负载。

# uptime

输出样例:

 18:02:41 up 41 days, 23:42, 1 user, load average: 0.00, 0.00, 0.00

1可被视为最佳负荷值。负载情况在每个系统上是有差异的,不能一概而论。对于单个CPU的系统1–3认为是良好的,而对于具体多个CPU的SMP系统,6-10负载值也是可接受的。

ps – 显示Linux的进程列表

ps命令将报告当前进程的快照。要选择所有进程,请使用-A或-e选项:

# ps -A

输出样例:

 PID TTY TIME CMD 1 ? 00:00:02 init 2 ? 00:00:02 migration/0 3 ? 00:00:01 ksoftirqd/0 4 ? 00:00:00 watchdog/0 5 ? 00:00:00 migration/1 6 ? 00:00:15 ksoftirqd/1......... 4881 ? 00:53:28 java 4885 tty1 00:00:00 mingetty 4886 tty2 00:00:00 mingetty 4887 tty3 00:00:00 mingetty 4888 tty4 00:00:00 mingetty 4891 tty5 00:00:00 mingetty 4892 tty6 00:00:00 mingetty 4893 ttyS1 00:00:00 agetty12853 ? 00:00:00 cifsoplockd12854 ? 00:00:00 cifsdnotifyd14231 ? 00:10:34 lighttpd14232 ? 00:00:00 php-cgi54981 pts/0 00:00:00 vim55465 ? 00:00:00 php-cgi55546 ? 00:00:00 bind9-snmp-stat55704 pts/1 00:00:00 ps

ps命令和top类似,但提供了更多的信息。

显示长格式输出

# ps -Al

要打开额外的完整模式(它将显示传递给进程的命令行参数)

# ps -AlF

显示线程 ( LWP and NLWP)

# ps -AlFH

在进程后监视线程

# ps -AlLm

显示系统上的所有进程

# ps ax

# ps axu

显示进程树

# ps -ejH

# ps axjf

# pstree

获取Linux进程的安全信息

# ps -eo euser,ruser,suser,fuser,f,comm,label

# ps axZ

# ps -eM

让我们打印作为用户vivek运行的每个进程

# ps -U vivek -u vivek u

以用户定义的格式配置ps命令输出

# ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm

# ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm

# ps -eopid,tt,user,fname,tmout,f,wchan

尝试只显示lighttpd的进程ID

# ps -C lighttpd -o pid=

或者

# pgrep lighttpd

或者

# pgrep -u vivek php-cgi

打印PID 55977的名称

# ps -p 55977 -o comm=

前10个内存消耗进程

# ps -auxf | sort -nr -k 4 | head -10

向我们展示10大消耗CPU的进程

# ps -auxf | sort -nr -k 3 | head -10

free – 显示Linux服务器内存使用情况

free命令显示系统中可用和已用物理内存和交换内存的总量,以及内核使用的缓冲区。

# free

输出样例:

total used free shared buffers cachedMem: 12302896 9739664 2563232 0 523124 5154740-/+ buffers/cache: 4061800 8241096Swap: 1052248 0 1052248

iostat – Montor Linux average CPU load and disk activity

iostat命令报告设备、分区和网络文件系统(NFS)的中央处理器(CPU)统计信息和输入/输出统计信息。

# iostat

输出样例:

Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in) 06/26/2009avg-cpu: %user %nice %system %iowait %steal %idle 3.50 0.09 0.51 0.03 0.00 95.86Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtnsda 22.04 31.88 512.03 16193351 260102868sda1 0.00 0.00 0.00 2166 180sda2 22.04 31.87 512.03 16189010 260102688sda3 0.00 0.00 0.00 1615 0

sar – 监视、收集和报告Linux系统活动

sar命令用于收集、报告和保存系统活动信息。要查看网络统计信息,输入如下命令:

# sar -n DEV | more

从0点开始的网络统计信息:

# sar -n DEV -f /var/log/sa/sa24 | more

显示实时利用率信息:

# sar 4 5

输出样例:

Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in) 06/26/200906:45:12 PM CPU %user %nice %system %iowait %steal %idle06:45:16 PM all 2.00 0.00 0.22 0.00 0.00 97.7806:45:20 PM all 2.07 0.00 0.38 0.03 0.00 97.5206:45:24 PM all 0.94 0.00 0.28 0.00 0.00 98.7806:45:28 PM all 1.56 0.00 0.22 0.00 0.00 98.2206:45:32 PM all 3.53 0.00 0.25 0.03 0.00 96.19Average: all 2.02 0.00 0.27 0.01 0.00 97.70

mpstat – 在Linux上监视多处理器的使用情况

mpstat命令显示每个可用处理器的活动,处理器0是第一个。mpstat-p all显示每个处理器的平均CPU利用率:

# mpstat -P ALL

输出样例:

Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in) 06/26/200906:48:11 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s06:48:11 PM all 3.50 0.09 0.34 0.03 0.01 0.17 0.00 95.86 1218.0406:48:11 PM 0 3.44 0.08 0.31 0.02 0.00 0.12 0.00 96.04 1000.3106:48:11 PM 1 3.10 0.08 0.32 0.09 0.02 0.11 0.00 96.28 34.9306:48:11 PM 2 4.16 0.11 0.36 0.02 0.00 0.11 0.00 95.25 0.0006:48:11 PM 3 3.77 0.11 0.38 0.03 0.01 0.24 0.00 95.46 44.8006:48:11 PM 4 2.96 0.07 0.29 0.04 0.02 0.10 0.00 96.52 25.9106:48:11 PM 5 3.26 0.08 0.28 0.03 0.01 0.10 0.00 96.23 14.9806:48:11 PM 6 4.00 0.10 0.34 0.01 0.00 0.13 0.00 95.42 3.7506:48:11 PM 7 3.30 0.11 0.39 0.03 0.01 0.46 0.00 95.69 76.89

pmap – 在Linux上监控进程内存使用情况

pmap命令报告进程的内存映射。使用此命令查找内存性能瓶颈的原因。

# pmap -d PID

要显示PID 47394的进程内存信息,请输入:

# pmap -d 47394

输出样例:

47394: /usr/bin/php-cgiAddress Kbytes Mode Offset Device Mapping0000000000400000 2584 r-x-- 0000000000000000 008:00002 php-cgi0000000000886000 140 rw--- 0000000000286000 008:00002 php-cgi00000000008a9000 52 rw--- 00000000008a9000 000:00000 [ anon ]0000000000aa8000 76 rw--- 00000000002a8000 008:00002 php-cgi000000000f678000 1980 rw--- 000000000f678000 000:00000 [ anon ]000000314a600000 112 r-x-- 0000000000000000 008:00002 ld-2.5.so000000314a81b000 4 r---- 000000000001b000 008:00002 ld-2.5.so000000314a81c000 4 rw--- 000000000001c000 008:00002 ld-2.5.so000000314aa00000 1328 r-x-- 0000000000000000 008:00002 libc-2.5.so000000314ab4c000 2048 ----- 000000000014c000 008:00002 libc-2.5.so.............00002af8d48fd000 4 rw--- 0000000000006000 008:00002 xsl.so00002af8d490c000 40 r-x-- 0000000000000000 008:00002 libnss_files-2.5.so00002af8d4916000 2044 ----- 000000000000a000 008:00002 libnss_files-2.5.so00002af8d4b15000 4 r---- 0000000000009000 008:00002 libnss_files-2.5.so00002af8d4b16000 4 rw--- 000000000000a000 008:00002 libnss_files-2.5.so00002af8d4b17000 768000 rw-s- 0000000000000000 000:00009 zero (deleted)00007fffc95fe000 84 rw--- 00007ffffffea000 000:00000 [ stack ]ffffffffff600000 8192 ----- 0000000000000000 000:00000 [ anon ]mapped: 933712K writeable/private: 4304K shared: 768000K

最后一行非常重要

  • mapped: 933712K 映射到文件的内存总量
  • writeable/private: 4304K 专用地址空间的数量
  • shared: 768000K 此进程与其他进程共享的地址空间量

netstat – Linux网络和统计监控工具

netstat命令显示网络连接、路由表、接口统计信息、伪装连接和多播成员身份。

# netstat -tulpn

# netstat -nat

ss – 网络统计

ss命令用于转储套接字统计信息。它允许显示类似于netstat的信息。请注意,netstat基本上是过时的。因此需要使用ss命令。要在Linux上SS所有TCP和UDP套接字,请执行以下操作:

# ss -t -a

或者

# ss -u -a

显示具有进程selinux安全上下文的所有TCP套接字:

# ss -t -a -Z

iptraf – 获取Linux上的实时网络统计信息

iptraf命令是交互式彩色IP LAN监视器。它是一个基于ncurses的IP LAN监视器,可以生成各种网络统计信息,包括TCP信息、UDP计数、ICMP和OSPF信息、以太网负载信息、节点状态、IP校验和错误等。它可以以易于阅读的格式提供以下信息:

  • TCP连接的网络流量统计
  • 按网络接口的IP流量统计
  • 按协议的网络流量统计
  • 按TCP/UDP端口和数据包大小统计的网络流量
  • 按第2层地址列出的网络流量统计信息
0bb324128ffcdce0371763572187428a.png

图2. iptraf一般接口统计

1c297a8e05f5a30d95a9f83e7b8e930c.png

图3 通过TCP连接统计网络传输情况

tcpdump –详细的网络流量分析

tcpdump命令是在网络上转储数据的简单命令。但是,您需要很好地理解TCP/IP协议才能使用此工具。例如,要显示有关DNS的流量信息,请输入:

# tcpdump -i eth1 'udp port 53'

查看进出端口80的所有IPv4 HTTP数据包,即仅打印包含数据的数据包,而不是syn和fin数据包和ack-only数据包,输入:

# tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

显示到202.54.1.5的所有ftp会话,输入:

# tcpdump -i eth1 'dst 202.54.1.5 and (port 21 or 20'

显示到192.168.1.5的所有HTTP会话:

# tcpdump -ni eth0 'dst 192.168.1.5 and tcp and port http'

使用wireshark查看有关文件的详细信息,输入:

# tcpdump -n -i eth1 -s 0 -w output.txt src or dst port 80

iotop – Linux I/O 监控

iotop命令监视器I/O利用率信息,基于Linux内核。它显示了按服务器上的进程或线程排序的当前I/O使用情况表。

$ sudo iotop

输出样例:

592a554002f8ee2b6735c757bd2261dc.png

htop – interactive process viewer

htop是一个基于ncurses的免费开源Linux进程查看器。它比top命令要好用得多。非常容易使用,您可以在不使用PIDS或离开htop接口的情况下选择要终止或重新冻结的进程。

$ htop

输出样例:

2962bbb81e5264000e5697b840090039.png

atop – 高级Linux系统和进程监视器

atop是一个非常强大的交互式监视器,可以查看Linux系统上的负载。它从性能角度显示最关键的硬件资源。您可以快速看到CPU、内存、磁盘和网络性能。它显示了在进程级别上,哪些进程负责与CPU和内存负载相关的指示负载。

$ atop

795c360017e5eed9e746ab4d4b0d1c76.png

ac and lastcomm

您必须监视Linux服务器上的进程和登录活动。psacct或acct包包含多个用于监控流程活动的实用程序,包括:

  1. ac命令:显示有关用户连接时间的统计信息
  2. lastcomm命令:显示有关以前执行的命令的信息
  3. accton命令:打开或关闭进程记帐
  4. sa命令:汇总会计信息

monit – 过程监督

monit是一个免费开源的软件,充当进程的看门狗。它具有重新启动失败服务的能力。您可以使用systemd、daemontools或任何其他类似的工具来实现相同的目的。

nethogs- 找出在Linux上占用带宽最多的pids

NetHogs是一种小型但方便的网络top工具。它按进程名(如firefox、wget等)对带宽进行分组。如果网络流量突然爆发,启动网管。您将看到哪个PID导致带宽激增。

$ sudo nethogs

09b81a5653793b0082bccc6bb18cce6f.png

iftop – 按主机显示接口上的带宽使用情况

iftop命令监听给定接口名(如eth0)上的网络流量。它按主机对显示当前带宽使用情况的列表。

$ sudo iftop

vnstat – 基于控制台的网络流量监视器

vnstat 是一个易于使用的基于控制台的Linux网络流量监视器。它为所选接口保留每小时、每天和每月网络流量的日志。

$ vnstat

nmon – Linux系统管理员、调优者、基准测试工具

nmon是linux系统管理员的终极工具,它主要用于性能调优。它可以从控制台显示CPU、内存、网络、磁盘、文件系统、NFS、顶级进程资源和分区信息。

$ nmon

5d276a443785005383fc8be3795a1c8c.png

glances – 给Linux系统按一个眼睛

glances是一个开源的跨平台监控工具。它在小屏幕上提供大量信息。它还可以在客户机/服务器模式下工作。

$ glances

strace – 在Linux上监视系统调用

要跟踪Linux系统调用和信号吗?尝试strace命令。这对于调试Web服务器和其他服务器问题很有用。了解如何使用跟踪流程并了解它在做什么。

/proc/ 文件系统 – 各种Linux内核统计信息

/proc file system提供有关各种硬件设备和其他Linux内核信息的详细信息。有关更多详细信息,请参阅Linux内核/proc文档。常见/过程示例:

# cat /proc/cpuinfo

# cat /proc/meminfo

# cat /proc/zoneinfo

# cat /proc/mounts

Nagios – Linux服务器/网络监控

Nagios是一款流行的开源计算机系统和网络监控应用软件。您可以轻松地监视所有主机、网络设备和服务。它可以在出现问题时发出警报,在情况好转时再次发出警报。风扇是“全自动Nagios”。Fan的目标是提供Nagios安装,包括Nagios社区提供的大多数工具。Fan以标准ISO格式提供了一个cdrom映像,使安装Nagios服务器变得容易。此外,为了改善Nagios周围的用户体验,发行版中还包括了大量工具。

Cacti – 基于Web的Linux监控工具

Cacti是一个完整的网络绘图解决方案,旨在利用rrdtool的数据存储和绘图功能。Cacti提供了快速轮询、高级图形模板、多种数据采集方法和开箱即用的用户管理功能。所有这些都被包装在一个直观、易于使用的界面中,这对于局域网大小的安装(包括具有数百个设备的复杂网络)是有意义的。它可以提供关于网络、CPU、内存、登录用户、Apache、DNS服务器等的数据。请参阅centos/rhel下的如何安装和配置cacti网络绘图工具。

KDE 系统守卫 –实时Linux系统报告和绘图

ksysguard是一个用于KDE桌面的网络化的任务和系统监控应用程序。这个工具可以在ssh会话上运行。它提供了许多功能,例如客户端/服务器体系结构,可以监视本地和远程主机。图形前端使用所谓的传感器来检索它显示的信息。传感器可以返回简单的值或更复杂的信息,如表。对于每种类型的信息,提供一个或多个显示器。在工作表中组织显示,这些工作表可以相互独立地保存和加载。因此,ksysguard不仅是一个简单的任务管理器,而且是一个非常强大的工具来控制大型服务器场。

357d2c663694aa3c81d8f4e21dfdfe97.png

图 KDE系统监控软件

Gnome Linux 系统监控

系统监视器应用程序使您能够显示基本的系统信息和监视系统进程、系统资源的使用情况和文件系统情况。还可以使用系统监视器修改系统的行为。虽然不如KDE系统保护功能强大,但它提供了对新用户有用的基本信息。

  • 显示有关计算机硬件和软件的各种基本信息。
  • Linux内核版本
  • GNOME 版
  • 硬件
  • 已安装内存
  • 处理器和速度
  • 系统状态
  • 当前可用磁盘空间
  • 过程
  • 内存和交换空间
  • 网络使用
  • 文件系统
  • 列出所有安装的文件系统以及每个文件系统的基本信息。
e9130e289ee8486f5d2fe3660a305036.png

Gnome系统监控程序

除了上述介绍的监控工具外,还有大名鼎鼎的zabbix和Open-Falcon等适合在局域网内进行监控的工具。本文就不再详细介绍了。

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页