简单实用:Linux系统IO查看指南 (如何查看linux系统io)

Linux系统是许多服务器和嵌入式设备的首选操作系统,其优秀的稳定性和大量的自由软件使其成为了开发者和运维人员的必备工具。在Linux系统中,I/O(input/output,输入/输出)是一个十分重要的概念。而I/O的检测和分析则是系统调试和优化的关键环节之一。本文就为大家介绍简单实用的Linux系统IO查看指南。

1. 查看I/O状态

查看I/O状态是了解系统运行情况的之一步,其中最常用的命令为iostat。这个命令通常使用sysstat工具包中的工具sysstat来实现。

使用iostat可以实时监测磁盘activity,IO请求队列,磁盘服务时间及IO列队延迟等信息。具体操作如下:

“`

sudo iostat -xk 1 10

“`

其中,-x参数表示展示详细信息,-k参数表示使用KB为单位,1表示每秒输出1次信息,10则表示输出10秒。

此外,还有另外一个工具可以用来查看I/O状态,即dstat。它可以实时显示CPU、内存、I/O等信息,语法如下:

“`

sudo dstat -cdlmnpsy –tcp

“`

其中,-c表示显示CPU数据;-d表示显示磁盘数据;-l表示显示负载数据;-m表示显示内存数据;-n表示显示网络数据;-p表示显示进程数据;-s表示显示swap数据;-y表示显示系统数据;–tcp表示显示TCP连接信息。

2. 查看进程的I/O

在Linux中,每个进程都有自己的读写请求,可以使用工具来查看每个进程的I/O情况。其中最常用的命令为iotop。

使用iotop可以实时监测进程I/O使用率,具体操作如下:

“`

sudo iotop

“`

iotop默认展示的是所有进程的I/O信息,使用-P参数可以指定具体的进程。例如:

“`

sudo iotop -P firefox

“`

此外,还可以使用pidstat命令来查看进程的I/O数据。pidstat命令可以查看有关进程的CPU、内存、磁盘、网络、时间等信息。具体操作如下:

“`

sudo pidstat -d 1

“`

其中,-d参数表示只显示磁盘信息,1表示每秒输出一次信息。

3. 查看文件的I/O

在Linux中,文件是系统中最重要的资源之一,对文件I/O的追踪和监测具有非常重要的意义。最常用的工具为strace。

strace可以追踪系统调用,包括I/O、内存、进程等操作。具体操作如下:

“`

sudo strace -p [pid]

“`

其中,[pid]为进程ID,即要追踪的进程。运行命令后,strace将输出该进程执行的所有系统调用信息。

此外,还有一个工具可以用来分析文件I/O,即lsof(List Open Files)。lsof可以列出当前进程打开的所有文件及其详细信息,包括文件名、文件大小、打开方式等。具体操作如下:

“`

sudo lsof -p [pid]

“`

其中,[pid]表示要查看的进程ID。

综上所述,Linux系统I/O查看指南主要包括以上三个方面:查看I/O状态、查看进程的I/O和查看文件的I/O。这些工具在调试和优化系统时非常有用,希望本文对大家有所帮助。

相关问题拓展阅读:

linux 系统查看哪个进程占io

lsof 是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。

常用的参数列表

lsof filename 显示打开指定文件的所有进程

lsof -a 表示两个参数都必须满足时才显示结果

lsof -c string 显示COMMAND列中包含指定字符的进程所有打开的文件

lsof -u username 显示所属user进程打开的文件

lsof -g gid 显示归属gid的进程情况

lsof +d /DIR/ 显示目录下被进程打开的文件

lsof +D /DIR/ 同上,但是会搜索目录下的所有目录,时间兆手相对较长

lsof -d FD 显示指定文族祥嫌件描述符的进程

lsof -n 不将IP转换为hostname,缺省是不加上-n参数

lsof -i 用以显示符合条件的进程情宴胡况

lsof -i

46 –> IPv4 or IPv6

protocol –> TCP or UDP

hostname –> Internet host name

hostaddr –> IPv4地址

service –> /etc/service中的 service name (可以不只一个)

port –> 端口号 (可以不只一个)

方法一:

安个iotop

以ubuntu为例: 

安装 root@ubuntu:~# apt-get install iotop 

安装完成后 执行iotop 就可以看到类似top一样的显示 

按进程显示IO各项指标

PS:内核需要升级到 >=2.6.20

方法二:

执行以下python脚本:

#!/usr/bin/python

# Monitoring per-process disk I/O activity

# written by

 

import sys, os, time, signal, re

class DiskIO:

    def __init__(self, pname=None, pid=None, reads=0, writes=0):

self.pname = pname

self.pid = pid

self.reads = 0

self.writes = 0

def main():

    argc = len(sys.argv)

    if argc != 1:

print “usage: ./iotop”

sys.exit(0)

    if os.getuid() != 0:

print “must be run as root”

sys.exit(0)

    signal.signal(signal.SIGINT, signal_handler)

    os.system(‘echo 1 > /proc/sys/vm/block_dump’)

    print “TASKPIDREAD      WRITE”

   好纯慎 while True:

os.system(‘dmesg -c > /tmp/diskio.log’)

l =

f = open(‘/tmp/diskio.log’, ‘r’)

line = f.readline()

while line:

m = re.match(\

  ‘^(\S+)\((\d+)\): (READ|WRITE) block (\d+) on (\S+)’, line)

if m != None:

  if not l:

      l.append(DiskIO(m.group(1), m.group(2)))

      line = f.readline()

      continue

  found = False

   友敬for item in l:

      if item.pid == m.group(2):

found = True

if m.group(3) == “READ”:

item.reads = item.reads + 1

elif m.group(3) == “WRITE”:

item.writes = item.writes + 1

  if not found:

      l.append(DiskIO(m.group(1), m.group(2)))

line = f.readline()

time.sleep(1)

for item in l:

print “%-10s %10s %10d %10d” % \

  (item.pname, item.pid, item.reads, item.writes)

def signal_handler(signal, frame):

    os.system(‘echo 0 > /proc/sys/vm/block_dump’)

    sys.exit(0)

if __name__==”__main__”:

    main()

终端里面执行 iostat

关于如何查看linux系统io的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 简单实用:Linux系统IO查看指南 (如何查看linux系统io)