linux系统监控、诊断工具之lsof用法简介

学学 linux 系统监控工具1,学学linux

充分利用好 linux
系统自带的系统监控工具可以快速便捷地了解系统性能以及其它事项,方便对系统进行分析和调试

学习文章:每个系统管理员都要知道的 30 个 Linux 系统监控工具
、通过vmstat学习CPU和进程性能监控

对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作。在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并运行是多么的不容易。基于此原因,我们已编写了最常使用的18个命令行工具列表,这些工具将有助于每个Linux/Unix 系统管理员的工作。这些命令行工具可以在各种Linux系统下使用,可以用于监控和查找产生性能问题的原因。这个命令行工具列表提供了足够的工具,您可以挑选适用于您的监控场景的工具。

linux系统监控、诊断工具之top详解
 

linux 系统监控、诊断工具之 IO wait

1、问题:

最近在做日志的实时同步,上线之前是做过单份线上日志压力测试的,消息队列和客户端、本机都没问题,但是没想到上了第二份日志之后,问题来了:

集群中的某台机器 top
看到负载巨高,集群中的机器硬件配置一样,部署的软件都一样,却单单这一台负载有问题,初步猜测可能硬件有问题了。

同时,我们还需要把负载有异常的罪魁祸首揪出来,到时候从软件、硬件层面分别寻找解决方案。

2、排查:

从 top 中可以看到 load average 偏高,%wa 偏高,%us 很低:

图片 1

从上图我们大致可以推断 IO 遇到了瓶颈,下面我们可以再用相关的 IO
诊断工具,具体的验证排查下。

PS:如果你对 top 的用法不了解,请参考我去年写的一篇博文:

linux 系统监控、诊断工具之 top 详解

常用组合方式有如下几种:

• 用vmstat、sar、iostat检测是否是CPU瓶颈
• 用free、vmstat检测是否是内存瓶颈
• 用iostat、dmesg 检测是否是磁盘I/O瓶颈
• 用netstat检测是否是网络带宽瓶颈

2.1 vmstat

vmstat命令的含义为显示虚拟内存状态“Viryual Memor
Statics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态。

图片 2

它的相关字段说明如下:

Procs进程)  • r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。长期大于1)  • b: 等待IO的进程数量,也就是处在非中断睡眠状态的进程数,展示了正在执行和等待CPU资源的任务个数。当这个值超过了CPU数目,就会出现CPU瓶颈了     Memory内存)  • swpd: 使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能。  • free: 空闲物理内存大小。  • buff: 用作缓冲的内存大小。  • cache: 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。     Swap  • si: 每秒从交换区写到内存的大小,由磁盘调入内存。  • so: 每秒写入交换区的内存大小,由内存调入磁盘。  注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少大多时候是0),那么不用担心,系统性能这时不会受到影响的。     IO现在的Linux版本块的大小为1kb)  • bi: 每秒读取的块数  • bo: 每秒写入的块数  注意:随机磁盘读写的时候,这2个值越大如超出1024k),能看到CPU在IO等待的值也会越大。     system系统)  • in: 每秒中断数,包括时钟中断。  • cs: 每秒上下文切换数。  注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。     CPU以百分比表示)  • us: 用户进程执行时间百分比(user time)  us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。  • sy: 内核系统进程执行时间百分比(system time)  sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。  • wa: IO等待时间百分比  wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈块操作)。  • id: 空闲时间百分比 

从 vmstat
中可以看到,CPU大部分的时间浪费在等待IO上面,可能是由于大量的磁盘随机访问或者磁盘的带宽所造成的,bi、bo
也都超过 1024k,应该是遇到了IO瓶颈。

2.2 iostat

下面再用更加专业的磁盘 IO 诊断工具来看下相关统计数据。

图片 3

它的相关字段说明如下:

rrqm/s:    每秒进行 merge 的读操作数目。即 delta(rmerge)/s  wrqm/s:    每秒进行 merge 的写操作数目。即 delta(wmerge)/s  r/s:       每秒完成的读 I/O 设备次数。即 delta(rio)/s  w/s:       每秒完成的写 I/O 设备次数。即 delta(wio)/s  rsec/s:    每秒读扇区数。即 delta(rsect)/s  wsec/s:    每秒写扇区数。即 delta(wsect)/s  rkB/s:     每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)  wkB/s:     每秒写K字节数。是 wsect/s 的一半。(需要计算)  avgrq-sz:  平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)  avgqu-sz:  平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。  await:     平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)  svctm:     平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)  %util:     一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒) 

可以看到两块硬盘中的 sdb 的利用率已经 100%,存在严重的 IO
瓶颈,下一步我们就是要找出哪个进程在往这块硬盘读写数据。

2.3 iotop

图片 4

根据 iotop 的结果,我们迅速的定位到是 flume 进程的问题,造成了大量的 IO
wait。

但是在开头我已经说了,集群中的机器配置一样,部署的程序也都 rsync
过去的一模一样,难道是硬盘坏了?

这得找运维同学来查证了,最后的结论是:

Sdb为双盘raid1,使用raid卡为“LSI Logic / Symbios Logic
SAS1068E”,无cache。近400的IOPS压力已经达到了硬件极限。而其它机器使用的raid卡是“LSI
Logic / Symbios Logic MegaRAID SAS 1078”,有256MB
cache,并未达到硬件瓶颈,解决办法是更换能提供更大IOPS的机器。

不过前面也说了,我们从软硬件两方面着手的目的就是看能否分别寻求代价最小的解决方案:
 

知道硬件的原因了,我们可以尝试把读写操作移到另一块盘,然后再看看效果:

图片 5

3、最后的话:另辟蹊径

其实,除了用上述专业的工具定位这个问题外,我们可以直接利用进程状态来找到相关的进程。

我们知道进程有如下几种状态:

PROCESS STATE CODES   D uninterruptible sleep (usually IO)   R running or runnable (on run queue)   S interruptible sleep (waiting for an event to complete)   T stopped, either by a job control signal or because it is being traced.   W paging (not valid since the 2.6.xx kernel)   X dead (should never be seen)   Z defunct ("zombie") process, terminated but not reaped by its parent. 

其中状态为 D 的一般就是由于 wait IO
而造成所谓的”非中断睡眠“,我们可以从这点入手然后一步步的定位问题:

for x in `seq 10`; do ps -eo state,pid,cmd | grep "^D"; echo "----"; sleep 5; done   D 248 [jbd2/dm-0-8]   D 16528 bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp   ----   D 22 [kdmflush]   D 16528 bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp   ----  # 或者:  while true; do date; ps auxf | awk '{if($8=="D") print $0;}'; sleep 1; done   Tue Aug 23 20:03:54 CLT 2011   root       302  0.0  0.0      0     0 ?        D    May22   2:58  \_ [kdmflush]   root       321  0.0  0.0      0     0 ?        D    May22   4:11  \_ [jbd2/dm-0-8]   Tue Aug 23 20:03:55 CLT 2011   Tue Aug 23 20:03:56 CLT 2011     cat /proc/16528/io   rchar: 48752567   wchar: 549961789   syscr: 5967   syscw: 67138   read_bytes: 49020928   write_bytes: 549961728   cancelled_write_bytes: 0      lsof -p 16528   COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME   bonnie++ 16528 root cwd DIR 252,0 4096 130597 /tmp   <truncated>   bonnie++ 16528 root 8u REG 252,0 501219328 131869 /tmp/Bonnie.16528   bonnie++ 16528 root 9u REG 252,0 501219328 131869 /tmp/Bonnie.16528   bonnie++ 16528 root 10u REG 252,0 501219328 131869 /tmp/Bonnie.16528   bonnie++ 16528 root 11u REG 252,0 501219328 131869 /tmp/Bonnie.16528   bonnie++ 16528 root 12u REG 252,0 501219328 131869 <strong>/tmp/Bonnie.16528</strong>      df /tmp   Filesystem 1K-blocks Used Available Use% Mounted on   /dev/mapper/workstation-root 7667140 2628608 4653920 37% /      fuser -vm /tmp          USER        PID ACCESS COMMAND   /tmp:  db2fenc1   1067 ....m db2fmp          db2fenc1   1071 ....m db2fmp          db2fenc1   2560 ....m db2fmp          db2fenc1   5221 ....m db2fmp 

4、Refer:

[1] Troubleshooting High I/O Wait in Linux

      ——A walkthrough on how to find processes that are causing high I/O
Wait on Linux Systems

[2] 理解Linux系统负荷

 

[3] 24 iostat, vmstat and mpstat Examples for Linux Performance
Monitoring

 

[4] vmstat vmstat命令

[5] Linux vmstat命令实战详解

[6] 影响Linux服务器性能的因素

 

[7] linux磁盘IO查看iostat,vmstat

 

[8] What Process is using all of my disk IO

[9] Linux Wait IO Problem

 

[10] Tracking Down High IO Wait in Linux

原文出自:


图片 6


系统监控、诊断工具之 IO wait 1、问题:
最近在做日志的实时同步,上线之前是做过单份线上日志压力测试的,消息队列和客户端、本…

linux系统监控、诊断工具之lsof用法简介

【1】top – 监控进程命令

命令 top 的实时监控图

1. 认识top

top (不同系统名字可能不一样,如 IBM 的 aix 中叫 topas )
命令显示系统的进程,提供实时动态视图(即对进程活动进行实时监控),默认情况下,top
命令显示 CPU 占用率最高的进程并每 5s 更新一次。

2. 主要作用
主要用来监控系统实时负载率、进程的资源占用率及其它各项系统状态属性是否正常。

3. 查看进程监控
终端输入命令 top

输出认识

  • 第一行:显示系统级的负载,平均负载有3个输出,分别代表在过去的1、5、15分钟时的平均负载。这部分的输出和命令
    uptime 一致。
  • 第二行:显示关于进程的一些大体信息比如当前的进程总数、运行或睡眠进程的数量。其中,标亮的进程列表中的
    S 列对应的值为 R 代表 running ,如果为 S 则为 sleeping
  • 第三行:显示 cpu 的一些负载信息,其中,特别是 %id%wa
    这两个指标尤为重要,很多的性能问题中,如果 %id 过低,%wa
    也很低,说明 cpu 使用率很高,可能有一些 sql 语句消耗了大量的 cpu
    资源,如果 %wa 很高的话,很可能是系统 IO 出现了问题。
  • 第四行:显示内存的使用情况,如果内存使用情况存在明显的异常,可以通过标亮的进程信息中查找
    %MEM 消耗比较高的进程。
  • 第五行:
    显示交换区的情况,如果内存足够或者系统负载不高,这个部分的数据没有什么大的变化。

Notte:关于 CPU 的状态信息参数说明
%Cpu(s): 9.5 us, 4.2 sy, 0.0 ni, 74.5 id, 11.7 wa, 0.0 hi, 0.1 si, 0.0
st

4. 常用快捷键
deepin 的 top 命令的 z 快捷键黑白切换模式

快捷键用法说明

  • t: 是否显示汇总信息
  • m: 是否显示内存信息
  • A:
    根据各种系统资源的利用率对进程进行排序,有助于快速识别系统中性能不佳的任务。
  • b: 打开或者关闭表中重要数字的加粗显示
  • c: 直接输入 top -c 或者(输入
    top,然后输入快捷键c)会切换显示进程的命令名或者是完成的命令行输入信息。
  • f: 进入 top 的交互式配置屏幕,用于根据特定的需求而设置 top 的显示。
  • o: 如果想定制显示 top 命令的输出顺序,比如默认是按照
    piduser的顺序来显示进程信息的,如果你想根据 userpid
    来显示,可以使用c
    快捷键。输入top,然后在显示屏幕上输入o,就会弹出一个交互界面。如果想先显示列
    USER,就输入 E,然后回车,结果就进行了重排。
  • r: 调整优先级(renice)
  • k: 杀掉进程(kill)
  • z: 切换彩色或黑白模式

1.Top-Linux进程监控

Linux下的Top命令是一个性能监控程序,许多系统管理员常常用它来监控Linux性能,在许多Linux或者类Unix操作系统里都有这个命令。Top命令用于按一定的顺序显示所有正在运行而且处于活动状态的实时进程,而且会定期更新显示结果。这条命令显示了CPU的使用率、内存使用率、交换内存使用大小、高速缓存使用大小、缓冲区使用大小,进程PID、所使用命令以及其他。它还可以显示正在运行进程的内存和CPU占用多的情况。对系统管理员来说,top命令式是一个非常有用的,它可用于监控系统并在需要的时候采取正确的处理动作。让我们看看实际中的top命令。

# top

Top命令举例
有关Top命令更多的例子,请阅读 :Linux下12个使用Top命令的例子。

接触 linux 的人对于 top 命令可能不会陌生(不同系统名字可能不一样,如 IBM
的 aix 中叫 topas
),它的作用主要用来监控系统实时负载率、进程的资源占用率及其它各项系统状态属性是否正常。 

 

【2】vmstat – 虚拟内存统计

1.认识 vmstat

vmstat [options] [delay [count]]

vmstat 命令是最常见的 Linux/Unix
监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率、内存使用、虚拟内存交换情况以及
IO 读写情况。

vmstat 命令的 man

2. 主要功能
vmstat 命令报告有关进程、内存、分页、块 IO、中断和 CPU 活动等信息。

3. 查看内存统计

vmstat 监控

Note:关于参数说明
procs ———–memory———- —swap– —–io—- -system– ——cpu—–
Procs
r b swpd free buff cache si so bi bo in cs us sy id wa st

  1. r:
    处于运行队列中的内核线程数目(进程数),这个值也可以判断是否需要增加CPU。(长期大于1)
  2. b:置于等待队列(等待资源、等待输入/输出)的内核线程数目;
    处于block 队列中不可中断的进程数
    Memory
  3. swpd: 可用的虚拟交换内存,如果 swpd 的值不为 0,但是 SISO
    的值长期为0,这种情况不会影响系统性能
  4. free:空闲物理内存大小
  5. buff:用作缓冲的内存大小
  6. cache:用作缓存的内存大小,如果 cache 值很大的时候,说明
    cache 处的文件数多,如果频繁访问到的文件都能被 cache
    处,那么磁盘的读IO bi会非常小。
    Swap
  7. si: 从磁盘到内存的交换页数目 (单位/S)
    8.so: 从交换内存到磁盘的交换页数目(单位/S)
    IO
    9.bi: 接收到块设备的块数(块/秒)
    10.bo: 发送到块设备的块数(块/秒)
    System
    11.in: 每秒中断数,包括时钟中断
    12.cs: 每秒上下文切换数
    CPU
    13.us:
    所有进程用户态消耗CPU的时间百分比。us值比较高时,说明进程用户态消耗的CPU时间多,如果长期大于50%,需要考虑优化应用程序
    14.sy: 内核系统进程执行时间百分比(system time)。sy
    值比较高时,说明进程内核态消耗的 CPU时间多;如果 us+sy 超过 80%
    ,就表明CPU资源存在不足。
    15.id: CPU 空闲时间百分比
  8. wa: IO等待时间百分比
  9. st: 虚拟机占用 CPU 时间百分比。如果 wa 值超过 20%,说明 IO
    等待严重。st 仅在 Linux 系统 vmstat 中显示

4. 选项(options)

选项用法说明

  • a:显示活动和非活动的页
  • f:显示启动后创建的进程总数
  • m:显示 slab 信息
  • n:头信息仅显示一次
  • s:以表格方式显示事件计数器和内存状态
  • d:显示磁盘相关统计信息
  • p:显示指定磁盘分区统计信息
  • S:输出信息的单位。参数有 k 、K 、m 、M
    ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024
    bytes)
  • V:显示 vmstat 版本信息。

5.参数

  • delay:刷新时间间隔。如果不指定,只显示一条结果。
  • count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。

6.使用实例

实例一:一般 vmstat
通过两个数字参数来完成,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,

vmstat 2 1

实际上,在应用过程中,常常习惯在一段时间内一直监控,不想监控直接结束
vmstat

实例二:显示活跃和非活跃内存

vmstat -a 2 3

使用 -a 选项显示活跃和非活跃内存时,所显示的内容增加 inact
active

字段补充说明
Memory(内存):
inact: 非活跃内存大小(当使用 -a 选项时显示)
active: 活跃的内存大小(当使用 -a 选项时显示)

实例三:查看系统已经 fork 了多少次

vmstat -f

查看评论

linux 系统监控工具1,学学linux 充分利用好
linux
系统自带的系统监控工具可以快速便捷地了解系统性能以及其它事项,方便对系统进行…

2. VmStat – 虚拟内存统计

Linux 的 VmStat 命令用于显示虚拟内存、内核线程、磁盘、系统进程、I/O 块、中断、CPU 活动 等的统计信息。缺省情况下, vmstat 命令在 Linux 系统下不可用,你需要安装一个包含了 vmstat 程序的 sysstat 软件包。命令格式的常见用法是:

# vmstatprocs ———–memory———- —swap– —–io—- –system– —–cpu—– r b swpd free inact active si so bi bo in cs us sy id wa st 1 0 0 810420 97380 70628 0 0 115 4 89 79 1 6 90 3 0

更多的 vmstat 例子,请阅读 : 6 Linux 下的 Vmstat 命令实例

下面我们先来看张 top 截图:

1、lsof 简介

3.Lsof-列出打开的文件

在许多Linux或者类Unix系统里都有lsof命令,它常用于以列表的形式显示所有打开的文件和进程。打开的文件包括磁盘文件、网络套接字、管道、设备和进程。使用这条命令的主要情形之一就是在无法挂载磁盘和显示正在使用或者打开某个文件的错误信息的时候。使用这条命令,你可以很容易地看到正在使用哪个文件。这条命令最常用的格式如下:

# lsofCOMMAND PID USER FD TYPE DEVICE SIZE NODE NAMEinit 1 root cwd DIR 104,2 4096 2 /init 1 root rtd DIR 104,2 4096 2 /init 1 root txt REG 104,2 38652 17710339 /sbin/initinit 1 root mem REG 104,2 129900 196453 /lib/ld-2.5.soinit 1 root mem REG 104,2 1693812 196454 /lib/libc-2.5.soinit 1 root mem REG 104,2 20668 196479 /lib/libdl-2.5.soinit 1 root mem REG 104,2 245376 196419 /lib/libsepol.so.1init 1 root mem REG 104,2 93508 196431 /lib/libselinux.so.1init 1 root 10u FIFO 0,17 953 /dev/initctl

有关lsof命令的用法和例子的更多信息,请参考: Linux下10个使用lsof命令的例子。

图片 7

 

4.Tcpdump-网络包分析器

Tcpdump是最广泛使用的网络包分析器或者包监控程序之一,它用于捕捉或者过滤网络上指定接口上接收或者传输的TCP/IP包。它还有一个选项用于把捕捉到的包保存到文件里,以便以后进行分析。在几乎所有主要的Linux发布里,tcpdump都可以使用。

# tcpdump -i eth0tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes22:08:59.617628 IP tecmint.com.ssh > 115.113.134.3.static-mumbai.vsnl.net.in.28472: P 2532133365:2532133481(116) ack 3561562349 win 964822:09:07.653466 IP tecmint.com.ssh > 115.113.134.3.static-mumbai.vsnl.net.in.28472: P 116:232(116) ack 1 win 964822:08:59.617916 IP 115.113.134.3.static-mumbai.vsnl.net.in.28472 > tecmint.com.ssh: . ack 116 win 64347

要想获得更多有关tcpdump用法的信息,请参阅: Linux下12个使用Tcpdump命令的例子。

(1)系统、任务统计信息:

lsof 是 linux 下的一个非常实用的系统级的监控、诊断工具。

5.Netstat-网络状态统计

Netstat是一个用于监控进出网络的包和网络接口统计的命令行工具。它是一个非常有用的工具,系统管理员可以用来监控网络性能,定位并解决网络相关问题。

# netstat -a | moreActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address Foreign Address Statetcp 0 0 *:mysql *:* LISTENtcp 0 0 *:sunrpc *:* LISTENtcp 0 0 *:realm-rusd *:* LISTENtcp 0 0 *:ftp *:* LISTENtcp 0 0 localhost.localdomain:ipp *:* LISTENtcp 0 0 localhost.localdomain:smtp *:* LISTENtcp 0 0 localhost.localdomain:smtp localhost.localdomain:42709 TIME_WAITtcp 0 0 localhost.localdomain:smtp localhost.localdomain:42710 TIME_WAITtcp 0 0 *:http *:* LISTENtcp 0 0 *:ssh *:* LISTENtcp 0 0 *:https *:* LISTEN

有关Netstat更多的例子,请参阅: Linux下20个使用Netstat命令的例子。

前 8 行是系统整体的统计信息。第 1 行是任务队列信息,同 uptime
命令的执行结果。其内容如下:

它的意思是 List Open Files,很容易你就记住了它是 “ls + of”的组合~
 

6. Htop – Linux进程监控

Htop 是一个非常高级的交互式的实时linux进程监控工具。 它和top命令十分相似,但是它具有更丰富的特性,例如用户可以友好地管理进程,快捷键,垂直和水平方式显示进程等等。 Htop是一个第三方工具,它不包含在linux系统中,你需要使用YUM包管理工具去安装它。 关于安装的更多信息,请阅读下文.

# htop

Htop 命令示例截图

对于Htop的安装,请读 : 在Linux安装Htop(Linux进程监控)

01:06:48

它可以用来列出被各种进程打开的文件信息,记住:linux 下 “一切皆文件”,

7.Iotop-监控Linux磁盘I/O

Iotop命令同样也非常类似于top命令和Htop程序,不过它具有监控并显示实时磁盘I/O和进程的统计功能。在查找具体进程和大量使用磁盘读写进程的时候,这个工具就非常有用。

# iotop

Iotop命令举例的截图
有关如何安装和使用iotop的信息,请阅读: 在Linux下安装Iotop。

8.Iostat-输入/输出统计

Iostat是一个用于收集显示系统存储设备输入和输出状态统计的简单工具。这个工具常常用来追踪存储设备的性能问题,其中存储设备包括设备、本地磁盘,以及诸如使用NFS等的远端磁盘。

# iostatLinux 2.6.18-238.9.1.el5 (tecmint.com) 09/13/2012avg-cpu: %user %nice %system %iowait %steal %idle 2.60 3.65 1.04 4.29 0.00 88.42Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtncciss/c0d0 17.79 545.80 256.52 855159769 401914750cciss/c0d0p1 0.00 0.00 0.00 5459 3518cciss/c0d0p2 16.45 533.97 245.18 836631746 384153384cciss/c0d0p3 0.63 5.58 3.97 8737650 6215544cciss/c0d0p4 0.00 0.00 0.00 8 0cciss/c0d0p5 0.63 3.79 5.03 5936778 7882528cciss/c0d0p6 0.08 2.46 2.34 3847771 3659776

有关iostat用法和举例的更多信息,请访问: Linux下6个使用iostat命令的例子。

当前时间

包括但不限于 pipes, sockets, directories, devices, 等等。

9.IPTraf-实时局域网IP监控

IPTraf是一个在Linux控制台运行的、开放源代码的实时网络(局域网)监控应用。它采集了大量信息,比如通过网络的IP流量监控,包括TCP标记、ICMP详细信息、TCP/UDP流量分离、TCP连接包和字节数。同时还采集有关接口状态的常见信息和详细信息:TCP、UDP、IP、ICMP、非IP,IP校验和错误,接口活动等。

IP流量监控
有关IPTraf工具用法以及其他更多信息,请访问: IPTraf网络监控工具。

up 1:22

因此,使用 lsof,你可以获取任何被打开文件的各种信息。

10. psacct 或者 acct – 监视用户活动

psacct或者acct工具用于监视系统里每个用户的活动状况。这两个服务进程运行在后台,它们对系统上运行的每个用户的所有活动进行近距离监视,同时还监视这些活动所使用的资源情况。

系统管理员可以使用这两个工具跟踪每个用户的活动,比如用户正在做什么,他们提交了那些命令,他们使用了多少资源,他们在系统上持续了多长时间等等。

有关这些命令的安装和用法举例信息,请参阅文章:使用psacct或者acct监视用户活动。

系统运行时间,格式为时:分

 

11.Monit – Linux进程和服务监控工具

Monit是一个免费的开源软件,也是一个基于网络的进程监控工具。它能自动监控和管理系统进程,程序,文件,文件夹,权限,总和验证码和文件系统。

这个软件能监控像Apache, MySQL, Mail, FTP, ProFTP, Nginx, SSH这样的服务。你可以通过命令行或者这个软件提供的网络借口来查看系统状态。

Monit Linux系统监控

更多内容请参阅:用Monit监控Linux进程

1 user

只需输入 lsof 就可以生成大量的信息,因为 lsof
需要访问核心内存和各种文件,所以必须以 root
用户的身份运行它才能够充分地发挥其功能。

12.NetHogs-监视每个进程使用的网络带宽

NetHogs是一个开放源源代码的很小程序(与Linux下的top命令很相似),它密切监视着系统上每个进程的网络活动。同时还追踪着每个程序或者应用所使用的实时网络带宽。

NetHogs:Linux下的带宽监视
更多信息请参阅: 使用NetHogs监视Linux的网络带宽使用状况。

当前登录用户数

 

13.iftop-监视网络带宽

iftop是另一个在控制台运行的开放源代码系统监控应用,它显示了系统上通过网络接口的应用网络带宽使用(源主机或者目的主机)的列表,这个列表定期更新。iftop用于监视网络的使用情况,而’top’用于监视CPU的使用情况。iftop是’top’工具系列中的一员,它用于监视所选接口,并显示两个主机间当前网络带宽的使用情况。

iftop-监视网络带宽。

更多信息请参阅:iftop-监视网络带宽的使用情况。

load average: 0.06, 0.60, 0.48

lsof 的示例输出:

14 Monitorix-系统和网络监控

Monitorix 是一个免费的轻量级应用工具,它的设计初衷是运行和监控Linux/Unix服务器系统和资源等。它有一个HTTP 网络服务器,这个服务器有规律的收集系统和网络的信息并以图形化的形式展示出来。它监控系统的平均负载和使用,内存分配、磁盘健康状况、系统服务、网络端口、邮件统计(Sendmail,Postfix,Dovecot等),MySQL统计,等等。它就是用来监控系统的总体性能,帮助发现失误、瓶颈和异常活动的。

系统负载,即任务队列的平均长度。

 

15. Arpwatch – 以太网活动监视器

Arpwatch被设计用来监控Linux上的以太网地址解析
(MAC和IP地址的变化)。他在一段时间内持续监控以太网活动并输出IP和MAC地址配对变动的日志。它还可以向管理员发送邮件通知,对地址配对的增改发出警告。这对于检测网络上的ARP攻击很有用。

更多信息请参阅 : Arpwatch to Monitor Ethernet Activity

三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

1

16. Suricata – 网络安全监控

Suricata
是一个开源的高性能网络安全、入侵检测和反监测工具,可以运行Linux、FreeBSD和Windows上。非营利组织OISF
(Open Information Security Foundation)开发并拥有其版权。

更多信息请参阅 : Suricata – A Network Intrusion Detection and Prevention
System

17. VnStat PHP – 网络流量监控

VnStat PHP 是流行网络工具"vnstat"的基于web的前端呈现。VnStat PHP 将网络使用情况呈现在漂亮的图形界面中。他可以显示以小时、日、月计的上传和下载流量并输出总结报告。

更多信息请参阅 : VnStat PHP – Monitoring Network Bandwidth

18. Nagios – 网络/服务器监控

Nagios是领先而强大的开源监控系统,他可以让网络 /系统管理员在问题影响到正常的业务之前发现并解决它们。有了Nagios系统,管理员可以在单个窗口内远程检测Linux、Windows、开关、路由器和打印机。它可以危险警告并指出系统/服务器是否有异常,这可以间接帮助你在问题发生之前采取抢救措施。

注意:这三个值可以用来判定系统是否负载过高——如果值

[email protected]:~/lab
0# lsof

持续大于系统 cpu 个数,就需要优化你的程序或者架构了。

2

(2)进程、 cpu 统计信息:

COMMAND     PID   TID       USER   FD      TYPE     DEVICE SIZE/OFF    
  NODE NAME

第 2~6
行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:

3

Tasks: 29 total

systemd       1             root  cwd       DIR        8,6     4096    
     2 /

进程总数

4

1 running

systemd       1             root  rtd       DIR        8,6     4096    
     2 /

正在运行的进程数

5

28 sleeping

systemd       1             root  txt       REG        8,6  2273340  
 1834909 /usr/lib/systemd/systemd

睡眠的进程数

6

0 stopped

systemd       1             root  mem       REG        8,6   210473  
 1700647 /lib/libnss_files-2.15.s

停止的进程数

7

0 zombie

僵尸进程数

2、lsof 常用用法

Cpu(s): 0.3% us

 

用户空间占用CPU百分比

2.1 监控打开的文件、设备

1.0% sy

 

内核空间占用CPU百分比

查看文件、设备被哪些进程占用 

0.0% ni

1

用户进程空间内改变过优先级的进程占用CPU百分比

# lsof /dev/tty1

98.7% id

2

空闲CPU百分比

COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

0.0% wa

3

等待输入输出的CPU时间百分比

bash       1770 jian    0u   CHR    4,1      0t0 1045 /dev/tty1

0.0% hi

4

Hardware IRQ

bash       1770 jian    1u   CHR    4,1      0t0 1045 /dev/tty1

0.0% si

5

Software IRQ

bash       1770 jian    2u   CHR    4,1      0t0 1045 /dev/tty1

 

6

注:

bash       1770 jian  255u   CHR    4,1      0t0 1045 /dev/tty1

(1)IRQ: IRQ全称为Interrupt Request,即是“中断请求”的意思。

7

(2)st(Steal Time):Steal time is the percentage of time a virtual CPU
waits for a real CPU while the hypervisor is servicing another virtual
processor. It’s only relevant in virtualized environments. It represents
time when the real CPU was not available to the current virtual machine

startx     1845 jian    0u   CHR    4,1      0t0 1045 /dev/tty1

  • it was “stolen” from that VM by the hypervisor (either to run another
    VM, or for its own needs).

8

So, relatively speaking, what does this mean? A high steal percentage
may mean that you may be outgrowing your virtual machine with your
hosting company. Other virtual machines may have a larger slice of the
CPU’s time and you may need to ask for an upgrade in order to compete.
Also, a high steal percentage may mean that your hosting company is
overselling virtual machines on your particular server. If you upgrade
your virtual machine and your steal percentage doesn’t drop, you may
want to seek another provider. A low steal percentage can mean that your
applications are working well with your current virtual machine. Since
your VM is not wrestling with other VM’s constantly for CPU time, your
VM will be more responsive. This may also suggest that your hosting
provider is underselling their servers, which is definitely a good
thing.0.0% sisi(Software Interrupts)

startx     1845 jian    1u   CHR    4,1      0t0 1045 /dev/tty1

(3)最后两行为内存信息:

9

 

Mem: 191272k total

2.2 监控文件系统

物理内存总量

 

173656k used

指定目录、挂载点,可以看到有哪些进程打开了其下的文件: 

使用的物理内存总量

1

17616k free

# lsof /data/

空闲内存总量

2

22052k buffers

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

用作内核缓存的内存量

3

Swap: 192772k total

bash    15983 jian  cwd    DIR    8,5     4096 8252 /data/backup

交换区总量

4

0k used

使用的交换区总量

这在 umount 某个文件系统失败时非常有用(通常会报该 FS is busy)。

192772k free

 

空闲交换区总量

列出某个目录(挂载点 如 /home 也行)下被打开的文件:

123988k cached

 

缓冲的交换区总量。

1

内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,

# lsof +D /var/log/

该数值即为这些内容已存在于内存中的交换区的大小。

2

相应的内存再次被换出时可不必再对交换区写入。

 

PS:如何计算可用内存和已用内存?

3

除了 free -m 之外,也可以看 top:

COMMAND   PID   USER  FD   TYPE DEVICE SIZE/OFF   NODE NAME

 

4

Mem:  255592k total,  167568k used,  88024k free,  25068k buffers
Swap:  524280k total,  0k used,  524280k free,  85724k cached

rsyslogd  488 syslog   1w   REG    8,1     1151 268940 /var/log/syslog

3.1  实际的程序可用内存数怎么算呢?

5

The answer is: free + (buffers + cached)

rsyslogd  488 syslog   2w   REG    8,1     2405 269616 /var/log/auth.log

88024k + (25068k + 85724k) = 198816k

6

3.2  程序已用内存数又怎么算呢?

console-k 144   root   9w   REG    8,1    10871 269369
/var/log/ConsoleKit/history

The answer is: used – (buffers + cached)

列出被指定进程名打开的文件:

167568k – (25068k + 85724k) = 56776k

 

3.3  怎么判断系统是否内存不足呢?

01

如果你的 swap used 数值大于 0
,基本可以判断已经遇到内存瓶颈了,要么优化你的代码,要么加内存。

# lsof -c ssh -c init

(4)进程信息区:

02

统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。

 

 

03

序号

COMMAND    PID   USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME

列名

04

含义

init         1       root  txt    REG        8,1   124704  917562
/sbin/init

a

05

PID

init         1       root  mem    REG        8,1  1434180 1442625
/lib/i386-linux-gnu/libc-2.13.so

进程id

06

b

init         1       root  mem    REG        8,1    30684 1442694
/lib/i386-linux-gnu/librt-2.13.so

PPID

07

父进程id

c

08

RUSER

ssh-agent 1528 lakshmanan    1u   CHR        1,3      0t0    4369
/dev/null

Real user name

09

d

ssh-agent 1528 lakshmanan    2u   CHR        1,3      0t0    4369
/dev/null

UID

10

进程所有者的用户id

ssh-agent 1528 lakshmanan    3u  unix 0xdf70e240      0t0   10464
/tmp/ssh-sUymKXxw1495/agent.1495

e

2.3 监控进程

USER

 

进程所有者的用户名

指定进程号,可以查看该进程打开的文件: 

f

01

GROUP

# lsof -p 2064

进程所有者的组名

02

g

COMMAND  PID USER   FD   TYPE     DEVICE SIZE/OFF    NODE NAME

TTY

03

启动进程的终端名。不是从终端启动的进程则显示为 ?

firefox 2064 jian  cwd    DIR        8,6     4096 1571780 /home/jian

h

04

PR

firefox 2064 jian  rtd    DIR        8,6     4096       2 /

优先级

05

i

firefox 2064 jian  txt    REG        8,6    44224 1985670
/usr/lib/firefox-12.0/firefox

NI

06

nice值。负值表示高优先级,正值表示低优先级

firefox 2064 jian  mem    REG        8,6 14707012  925361
/usr/share/fonts/chinese/msyhbd.ttf

j

07

P

firefox 2064 jian  mem    REG        8,6 15067744  925362
/usr/share/fonts/chinese/msyh.ttf

最后使用的CPU,仅在多CPU环境下有意义

08

k

firefox 2064 jian  mem    REG        8,6 16791251 1701681
/usr/share/fonts/wenquanyi/wqy-zenhei.ttc

%CPU

09

上次更新到现在的CPU时间占用百分比

firefox 2064 jian  mem    REG       0,16 67108904   10203
/dev/shm/pulse-shm-3021850167

l

10

TIME

进程使用的CPU时间总计,单位秒

当你想要杀掉某个用户所有打开的文件、设备,你可以这样:

m

 

TIME+

1

进程使用的CPU时间总计,单位1/100秒

kill -9 `lsof -t -u lakshmanan`

n

此处 -t 的作用是单独的列出 进程 id 这一列。

%MEM

2.4 监控网络

进程使用的物理内存百分比

 

o

查看指定端口有哪些进程在使用(lsof -i 列出所有的打开的网络连接): 

VIRT

1

进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

# lsof -i:22

p

2

SWAP

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

进程使用的虚拟内存中,被换出的大小,单位kb。

3

q

sshd    1569 root    3u  IPv4  10303      0t0  TCP *:ssh (LISTEN)

RES

4

进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

sshd    1569 root    4u  IPv6  10305      0t0  TCP *:ssh (LISTEN)

r

5

CODE

可执行代码占用的物理内存大小,单位kb

列出被某个进程打开所有的网络文件:

s

 

DATA

1

可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb

lsof -i -a -p 234

t

或者

SHR

1

共享内存大小,单位kb

lsof -i -a -c ssh

u

列出所有 tcp、udp 连接:

nFLT

 

页面错误次数

1

v

lsof -i tcp;

nDRT

2

最后一次写入到现在,被修改过的页面数。

lsof -i udp;

w

列出所有 NFS 文件:

S

 

进程状态。

1

D=不可中断的睡眠状态

lsof -N -u lakshmanan -a

R=运行

查看指定网口有哪些进程在使用:

S=睡眠

 

T=跟踪/停止

1

Z=僵尸进程

# lsof
[email protected]

x

2

COMMAND

COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

命令名/命令行

3

y

skype      1909 jian   54u  IPv4   9116      0t0  TCP
192.168.1.91:40640->64.4.23.153:40047 (ESTABLISHED)

WCHAN

4

若该进程在睡眠,则显示睡眠中的系统函数名

pidgin     1973 jian    7u  IPv4   6599      0t0  TCP
192.168.1.91:59311->hx-in-f125.1e100.net:https (ESTABLISHED)

z

5

Flags

pidgin     1973 jian   13u  IPv4   9260      0t0  TCP
192.168.1.91:54447->by2msg3010511.phx.gbl:msnp (ESTABLISHED)

任务标志,参考 sched.h

6

(5)查看指定列

默认情况下仅显示比较重要的
PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。 
可以通过下面的快捷键来更改显示内容: 

3、更多使用技巧

5.1 f 键选择显示内容

 

通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z
即可显示或隐藏对应的列,最后按回车键确定。

3.1 监控用戶

5.2 o 键改变显示顺序

 

按 o 键可以改变列的显示顺序。按小写的 a-z
可以将相应的列向右移动,而大写的 A-Z
可以将相应的列向左移动。最后按回车键确定。

查看指定用戶打开的文件(lsof -u ^lakshmanan 可以排除某用户): 

5.3 F/O 键将进程按列排序

1

按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的
R 键可以将当前的排序倒转。

# lsof -u messagebus

(6)常用交互命令

2

从使用角度来看,熟练的掌握这些命令比掌握选项还重要一些。这些命令都是单字母的,如果在命令行选项中使用了s选项,则可能其中一些命令会被屏蔽掉。 
   Ctrl+L 擦除并且重写屏幕。 
  h或者? 显示帮助画面,给出一些简短的命令总结说明。 
  k
终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。 
  i 忽略闲置和僵死进程。这是一个开关式命令。 
  q 退出程序。 
  r
重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。 
  S 切换到累计模式。 
  s
改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m
s。输入0值则系统将不断刷新,默认值是5
s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。 
  f或者F 从当前显示中添加或者删除项目。 
  o或者O 改变显示项目的顺序。 
  l 切换显示平均负载和启动时间信息。 
  m 切换显示内存信息。 
  t 切换显示进程和CPU状态信息。 
  c 切换显示命令名称和完整命令行。 
  M 根据驻留内存大小进行排序。 
  P 根据CPU使用百分比大小进行排序。 
  T 根据时间/累计时间进行排序。 
  W 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。 

COMMAND    PID       USER   FD   TYPE     DEVICE SIZE/OFF    NODE NAME

(7)最后的技能:top 命令小技巧

3

1、输入大写P,则结果按CPU占用降序排序。
2、输入大写M,结果按内存占用降序排序。
3、按数字 1 则可以显示所有CPU核心的负载情况。
4、top -d 5  每隔 5 秒刷新一次,默认 1 秒
5、top -p 4360,4358  监控指定进程
6、top -U johndoe  ‘U’为 真实/有效/保存/文件系统用户名。
7、top -u 500  ‘u’为有效用户标识
8、top -bn 1  显示所有进程信息,top -n 1 只显示一屏信息,供管道调用
9、top -M   #show memory summary in megabytes not kilobytes
10、top -p 25097 -n 1 -b  # -b 避免输出控制字符,管道调用出现乱码
11、top翻页:top -bn1 | less
12、增强版的 top:htop ,一个更加强大的交互式进程管理器:

dbus-daem 1805 messagebus  cwd    DIR        8,6     4096       2 /

图片 8

4

接触 linux
的人对于 top 命令可能不会陌生(不同系统名字可能不一样,如 IBM 的 aix
中叫 topas ),它的作…

dbus-daem 1805 messagebus  rtd    DIR        8,6     4096       2 /

5

dbus-daem 1805 messagebus  txt    REG        8,6  1235361 1834948
/usr/bin/dbus-daemon

6

dbus-daem 1805 messagebus  mem    REG        8,6   210473 1700647
/lib/libnss_files-2.15.so

7

dbus-daem 1805 messagebus  mem    REG        8,6   190145 1700642
/lib/libnss_nis-2.15.so

8

dbus-daem 1805 messagebus  mem    REG        8,6   490366 1700636
/lib/libnsl-2.15.so

9

3.2 监控应用程序

 

查看指定程序打开的文件: 

1

# lsof -c firefox

2

COMMAND  PID USER   FD   TYPE     DEVICE SIZE/OFF    NODE NAME

3

firefox 2064 jian  cwd    DIR        8,6     4096 1571780 /home/jian

4

firefox 2064 jian  rtd    DIR        8,6     4096       2 /

5

firefox 2064 jian  txt    REG        8,6    44224 1985670
/usr/lib/firefox-12.0/firefox

6

firefox 2064 jian  mem    REG        8,6 14707012  925361
/usr/share/fonts/chinese/msyhbd.ttf

7

firefox 2064 jian  mem    REG        8,6 15067744  925362
/usr/share/fonts/chinese/msyh.ttf

8

firefox 2064 jian  mem    REG        8,6 16791251 1701681
/usr/share/fonts/wenquanyi/wqy-zenhei.ttc

9

4、命令模式技巧

 

4.1 组合逻辑查询条件

 

只有多个查询条件都满足, 用 “-a” 参数,默认是 -o 。 

1

# lsof -a -c bash -u root

2

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME

3

bash    1986 root  cwd    DIR    8,6     4096 1701593 /root/lab

4

bash    1986 root  rtd    DIR    8,6     4096       2 /

5

bash    1986 root  txt    REG    8,6  1994157 1700632 /bin/bash

6

bash    1986 root  mem    REG    8,6  9690800  405214
/usr/lib/locale/locale-archive

7

bash    1986 root  mem    REG    8,6   210473 1700647
/lib/libnss_files-2.15.so

4.2 lsof 命令的重复执行模式:

 

基于给定的参数延时多少秒重复执行 lsof

 

+r 表示 当没有文件被打开的时候,repeat mode 将自行结束。

 

-r 表示 不管文件是否存在或者被打开,它都将执行,直到你中断它。

 

每个循环的输出使用 ‘=======’ 做分隔符,你也可以用 ‘-r’ | ‘+r’
指定延时时间。

 

 

01

# lsof -u lakshmanan -c init -a -r5

02

 

03

=======

04

=======

05

COMMAND   PID       USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME

06

inita.sh 2971 lakshmanan  cwd    DIR    8,1     4096  393218
/home/lakshmanan

07

inita.sh 2971 lakshmanan  rtd    DIR    8,1     4096       2 /

08

inita.sh 2971 lakshmanan  txt    REG    8,1    83848  524315 /bin/dash

09

inita.sh 2971 lakshmanan  mem    REG    8,1  1434180 1442625
/lib/i386-linux-gnu/libc-2.13.so

10

inita.sh 2971 lakshmanan  mem    REG    8,1   117960 1442612
/lib/i386-linux-gnu/ld-2.13.so

11

inita.sh 2971 lakshmanan    0u   CHR  136,4      0t0       7 /dev/pts/4

12

inita.sh 2971 lakshmanan    1u   CHR  136,4      0t0       7 /dev/pts/4

13

inita.sh 2971 lakshmanan    2u   CHR  136,4      0t0       7 /dev/pts/4

14

inita.sh 2971 lakshmanan   10r   REG    8,1       20  393578
/home/lakshmanan/inita.sh

15

=======

以上输出是前 5 秒没有输出,然后 “inita.sh” 启动后,开始有了输出。

 

5、最后的技巧

 

关于磁盘空间告警 df -h –max=1 与 du -hx –max=1 显示不一致的问题,

 

最常见的的还是下面这种情况:

 

lsof|grep -i delete

 

看看被删除的文件:有些删了文件,但是进程没
reload,那些空间还是占用的,你可以理解为类似 windows
下的进程句柄没释放的概念吧~ 只是 windows
下如果有文件被进程使用,你一般是删不掉的,而 linux
虽然不做删除限制,但却要等到进程使用完文件才能完全释放,以防止进程奔溃,这是操作系统对资源的管理差异吧~

例如 nginx 会有很多临时文件占用了 /tmp 目录,删掉后,依然占用着空间,

 

此时你可以:

 

pkill -9 nginx && /etc/init.d/nginx restart

1、lsof
简介 lsof 是 linux 下的一个非常实用的系统级的监控、诊断工具。 它的意思是
List Open Files,很…

发表评论

电子邮件地址不会被公开。 必填项已用*标注