当前位置:首页 » 操作系统 » linux查看io进程

linux查看io进程

发布时间: 2022-09-12 00:49:46

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]
[protocol][@hostname|hostaddr][:service|port]
46
-->
IPv4
or
IPv6
protocol
-->
TCP
or
UDP
hostname
-->
Internet
host
name
hostaddr
-->
IPv4地址
service
-->
/etc/service中的
service
name
(可以不只一个)
port
-->
端口号
(可以不只一个)

⑵ linux系统如何查看网络IO

首先 、用top命令查看

top - 16:15:05 up 6 days, 6:25, 2 users, load average: 1.45, 1.77, 2.14

Tasks: 147 total, 1 running, 146 sleeping, 0 stopped, 0 zombie

Cpu(s): 0.2% us, 0.2% sy, 0.0% ni, 86.9% id, 12.6% wa, 0.0% hi, 0.0% si

Mem: 4037872k total, 4003648k used, 34224k free, 5512k buffers

Swap: 7164948k total, 629192k used, 6535756k free, 3511184k cached

查看12.6% wa

IO等待所占用的CPU时间的百分比,高过30%时IO压力高

其次、 用iostat -x 1 10

avg-cpu: %user %nice %sys %iowait %idle

0.00 0.00 0.25 33.46 66.29

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util

sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

sdb 0.00 1122 17.00 9.00 192.00 9216.00 96.00 4608.00 123.79 137.23 1033.43 13.17 100.10

sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

查看%util 100.10 %idle 66.29

如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。

idle小于70% IO压力就较大了,一般读取速度有较多的wait.

同时可以结合vmstat 查看查看b参数(等待资源的进程数)

vmstat -1

如果你想对硬盘做一个IO负荷的压力测试可以用如下命令

time dd if=/dev/zero bs=1M count=2048 of=direct_2G

此命令为在当前目录下新建一个2G的文件

我们在新建文件夹的同时来测试IO的负荷情况。

⑶ linux 怎么查看那个进程占用的io

ps -ef | grep 进程名称 或者直接pgrep 进程名称
例如mysql
ps -ef | grep mysql
pgrep mysql

⑷ 怎么查看linux的哪个进程占用磁盘io较多

1.使用iotop命令

使用该命令有个条件,Linux内核要高于2.6.20的版本,版本过低则没有此命令,执行效果如下图所示:

注意:操作完成后请关闭block_mp和启动syslog

echo 0 > /proc/sys/vm/block_mp #关闭block_mp

/etc/init.d/syslog start #启动syslog

⑸ linux 查看哪个进程占用io

用 lsof 查看某块磁盘上的读写进程。

gddg:~ # lsof /dev/xvda2 |head
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 202,2 4096 2 /
init 1 root rtd DIR 202,2 4096 2 /
init 1 root txt REG 202,2 40784 193218 /sbin/init
init 1 root mem REG 202,2 19114 8063 /lib64/libdl-2.11.1.so
init 1 root mem REG 202,2 1661454 8057 /lib64/libc-2.11.1.so
init 1 root mem REG 202,2 236384 8114 /lib64/libsepol.so.1
init 1 root mem REG 202,2 113904 8115 /lib64/libselinux.so.1
init 1 root mem REG 202,2 149797 8050 /lib64/ld-2.11.1.so
kthreadd 2 root cwd DIR 202,2 4096 2 /

然后可以通过 lsof -p $pid 查看详情

gddg:~ # lsof -p 32597
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 32597 root cwd DIR 202,2 4096 16097 /root
bash 32597 root rtd DIR 202,2 4096 2 /
bash 32597 root txt REG 202,2 584016 32203 /bin/bash
bash 32597 root mem REG 202,2 293936 8125 /lib64/libncurses.so.5.6
bash 32597 root mem REG 202,2 1661454 8057 /lib64/libc-2.11.1.so
bash 32597 root mem REG 202,2 19114 8063 /lib64/libdl-2.11.1.so
bash 32597 root mem REG 202,2 263568 8153 /lib64/libreadline.so.5.2
bash 32597 root mem REG 202,2 149797 8050 /lib64/ld-2.11.1.so
bash 32597 root mem REG 202,2 217016 16498 /var/run/nscd/passwd
bash 32597 root mem REG 202,2 256324 149503 /usr/lib/locale/en_US.utf8/LC_CTYPE
bash 32597 root mem REG 202,2 54 149490 /usr/lib/locale/en_US.utf8/LC_NUMERIC
bash 32597 root mem REG 202,2 2454 133112 /usr/lib/locale/en_US.utf8/LC_TIME
bash 32597 root mem REG 202,2 1163682 149504 /usr/lib/locale/en_US.utf8/LC_COLLATE
bash 32597 root mem REG 202,2 286 133111 /usr/lib/locale/en_US.utf8/LC_MONETARY

⑹ linux怎样查看那个进程占用网络io

查看linux进程占用端口步骤如下:

  1. lsof -i 用以显示符合条件的进程情况,lsof(list open files)是一个列出当前系统打开文件的工具。以root用户来执行lsof -i命令,如下图


    ⑺ 如何监测Linux进程的实时IO读写情况

    如何查看进程 IO 读写情况
    Linux Kernel 2.6.20 以上的内核支持进程 IO 统计,可以用类似 iotop 这样的工具来监测每个进程对 IO 操作的情况,就像用 top 来实时查看进程内存、CPU 等占用情况那样。但是对于 2.6.20 以下的 Linux 内核版本就没那么幸运了,根据 Stack Overflow 的这篇回帖 给出的方法,写了一个简单的 python 脚本用来在 linux kernel < 2.6.20 下打印进程 IO 状况。
    Kernel < 2.6.20

    这个脚本的想法很简单,把 dmesg 的结果重定向到一个文件后再解析出来,每隔1秒钟打印一次进程 IO 读写的统计信息,执行这个脚本需要 root:
    #!/usr/bin/python
    # Monitoring per-process disk I/O activity

    ⑻ 如何查看linux服务器io读写情况

    首先 、用top命令查看
    top - 16:15:05 up 6 days, 6:25, 2 users, load average: 1.45, 1.77, 2.14
    Tasks: 147 total, 1 running, 146 sleeping, 0 stopped, 0 zombie
    Cpu(s): 0.2% us, 0.2% sy, 0.0% ni, 86.9% id, 12.6% wa, 0.0% hi, 0.0% si
    Mem: 4037872k total, 4003648k used, 34224k free, 5512k buffers
    Swap: 7164948k total, 629192k used, 6535756k free, 3511184k cached
    查看12.6% wa
    IO等待所占用的CPU时间的百分比,高过30%时IO压力高
    其次、 用iostat -x 1 10
    avg-cpu: %user %nice %sys %iowait %idle
    0.00 0.00 0.25 33.46 66.29
    Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
    sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    sdb 0.00 1122 17.00 9.00 192.00 9216.00 96.00 4608.00 123.79 137.23 1033.43 13.17 100.10
    sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

    查看%util 100.10 %idle 66.29
    如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
    idle小于70% IO压力就较大了,一般读取速度有较多的wait.
    同时可以结合vmstat 查看查看b参数(等待资源的进程数)
    vmstat -1
    如果你想对硬盘做一个IO负荷的压力测试可以用如下命令
    time dd if=/dev/zero bs=1M count=2048 of=direct_2G
    此命令为在当前目录下新建一个2G的文件
    我们在新建文件夹的同时来测试IO的负荷情况

    ⑼ linux下有没有查看某个进程的IO的工具

    你可以试试用ps命令,以下为常用,具体用法可以网络

    1

    #> ps aux

    可以比较详细的显示进程信息
    同时也可在此命令后使用管道符号“|”跟上grep搜索关键字相关进程

    ⑽ 如何找出Linux系统高IO的思路总结

    前言

    I/O Wait是一个需要使用高级的工具来debug问题原因,当然也有许多基本工具的高级用法。I/O wait的问题难以定位的原因是:因为我们有很多工具可以告诉你I/O 受限了,但是并没有告诉你具体是哪个进程引起的。

    1. 如何确认,是否是I/O问题导致系统缓慢

    确认是否是I/O导致的系统缓慢我们可以使用多个命令,但是,最简单的是unix的命令 top

    # top

    top - 14:31:20 up 35 min, 4 users, load average: 2.25, 1.74, 1.68

    Tasks: 71 total, 1 running, 70 sleeping, 0 stopped, 0 zombie

    Cpu(s): 2.3%us, 1.7%sy, 0.0%ni, 0.0%id, 96.0%wa, 0.0%hi, 0.0%si, 0.0%st

    Mem: 245440k total, 241004k used, 4436k free, 496k buffers

    Swap: 409596k total, 5436k used, 404160k free, 182812k cached

    从CPU这行,可以发现CPU的io wait;这里是96.0%。越高就代表CPU用于io wait的资源越多。

    2. 找出哪个磁盘正在被写入

    上边的top命令从一个整体上说明了I/O wait,但是并没有说明是哪块磁盘影响的,想知道是哪块磁盘引发的问题,可以使用另外一个命令 iostat 命令

    $ iostat -x 2 5

    avg-cpu: %user %nice %system %iowait %steal %idle

      3.66 0.00 47.64 48.69 0.00 0.00

    Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util

    sda 44.50 39.27 117.28 29.32 11220.94 13126.70 332.17 65.77 462.79 9.80 2274.71 7.60 111.41

    dm-0 0.00 0.00 83.25 9.95 10515.18 4295.29 317.84 57.01 648.54 16.73 5935.79 11.48 107.02

    dm-1 0.00 0.00 57.07 40.84 228.27 163.35 8.00 93.84 979.61 13.94 2329.08 10.93 107.02

    iostat 会每2秒更新一次,一共打印5次信息, -x 的选项是打印出扩展信息

    第一个iostat 报告会打印出系统最后一次启动后的统计信息,这也就是说,在多数情况下,第一个打印出来的信息应该被忽略,剩下的报告,都是基于上一次间隔的时间。举例子来说,这个命令会打印5次,第二次的报告是从第一次报告出来一个后的统计信息,第三次是基于第二次 ,依次类推

    所以,一定记住:第一个忽略!

    在上面的例子中,sda的%utilized 是111.41%,这个很好的说明了有进程正在写入到sda磁盘中。

    除了%utilized 外,我们可以从iostat得到更加丰富的资源信息,例如每毫秒读写请求(rrqm/s & wrqm/s)),每秒读写的((r/s & w/s)。在上边的例子中,我们的项目看起来正在读写非常多的信息。这个对我们查找相应的进程非常有用。

    3. 找出导致高IO的进程

    # iotop

    Total DISK READ: 8.00 M/s | Total DISK WRITE: 20.36 M/s

      TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND

    15758 be/4 root 7.99 M/s 8.01 M/s 0.00 % 61.97 % bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp

    最简单的方法就是用iotop找出哪个进程用了最多的存储资源,从上面可以看到是bonnie++。

    iotop很好用,但是不是默认安装的。

    如果没有iotop,下面的方式也可以让你有种方法缩小范围,尽快找到是哪个进程。

    ps 命令对内存和CPU有一个统计,但是他没有对磁盘I/O的统计,虽然他没有显示磁盘I/O,但是它显示进行的状态,我们可以用来知道一个进程是否正在等待I/O

    主要的进程状态有:

    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.

    等待I/O的进程的状态一般是“uninterruptible sleep”,或者“D”,我们可以很容易的查找到正在等待I/O的进程

    # for x in `seq 1 1 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 [kswapd0]

    D 16528 bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp

    ----

    D 22 [kswapd0]

    D 16528 bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp

    ----

    D 22 [kswapd0]

    D 16528 bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp

    ----

    D 16528 bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp

    上边的例子会循环的输出状态是D的进程,每5秒一次,一共10次

    从输出我们可以知道 bonnie++ 的pid是16528 ,在waiting,bonnie++看起来就是我们想找到的进程,但是,只是从它的状态,我们没有办法证明就是bonnie++引起的I/O等待。

    为了证明,我们可以可以查看/proc,每个进程目录下都有一个叫io的文件,里边保存这和iotop类似的信息。

    # cat /proc/16528/io

    rchar: 48752567

    wchar: 549961789

    syscr: 5967

    syscw: 67138

    read_bytes: 49020928

    write_bytes: 549961728

    cancelled_write_bytes: 0

    read_bytes和write_bytes是这个进程从磁盘读写的字节,在这个例子中,bonnie++进程读取了46M的数据并且写入了524MB的数据到磁盘上。

    4. 找出哪个文件正在被大量写入

    lsof 命令可以展示一个进程打开的所有文件。从这个列表中,我们可以找到哪个文件被写入。

    # 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% /

    # pvdisplay

      --- Physical volume ---

      PV Name /dev/sda5

      VG Name workstation

      PV Size 7.76 GiB / not usable 2.00 MiB

      Allocatable yes

      PE Size 4.00 MiB

      Total PE 1986

      Free PE 8

      Allocated PE 1978

      PV UUID CLbABb-GcLB-l5z3-TCj3-IOK3-SQ2p-RDPW5S

    使用pvdisplay可以看到,pv设备就是/dev/sda5,正是我们前面找到的sda。

    参考文档:http://bencane.com/2012/08/06/troubleshooting-high-io-wait-in-linux/

热点内容
主播网站源码 发布:2025-05-15 02:50:56 浏览:167
中文编程语言有哪些 发布:2025-05-15 02:48:59 浏览:535
配置中心应急流程有哪些 发布:2025-05-15 02:37:31 浏览:669
php宏定义 发布:2025-05-15 02:32:54 浏览:270
咸鱼支付密码哪里改 发布:2025-05-15 02:32:53 浏览:520
存储机箱 发布:2025-05-15 02:31:31 浏览:836
编程很累吗 发布:2025-05-15 02:29:25 浏览:552
疫情期间访问国外网络 发布:2025-05-15 02:24:24 浏览:247
我的世界网易版游戏服务器 发布:2025-05-15 02:23:46 浏览:221
全球编程网站 发布:2025-05-15 02:22:55 浏览:334