91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

查看Linux文件占用進(jìn)程寫數(shù)據(jù)

dyquk4xk2p3d ? 來(lái)源:良許Linux ? 作者:良許Linux ? 2022-11-04 16:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


	

背景

centos7 在某一段時(shí)間監(jiān)控報(bào)警磁盤使用率達(dá)99%,由于監(jiān)控屬于概要形式信息,沒(méi)有快照信息的監(jiān)控(能發(fā)現(xiàn)某進(jìn)程的I/O,CPU消耗情況),所以需要在服務(wù)器上去定時(shí)執(zhí)行統(tǒng)計(jì)命令獲取快照信息。 需要通過(guò)iostat -dx -k去查看avgqu-sz、await、svctm、%util; sar -u查看%iowait、%user; pidstat -d 查看進(jìn)程I/O讀寫的快照信息

步驟

  • 生成統(tǒng)計(jì)信息文件

cat>/tmp/at_task.sh</tmp/pidstat_`date +%F_%T`.log 2>& 1 &
sar -u 2  >/tmp/sar_`date +%F_%T`.log 2>& 1 &
while [ 1 ];do echo -n `date +%T` >>/tmp/iostat_`date +%F` 2>& 1  && iostat -dx -k 1 1 >>/tmp/iostat_`date +%F` 2>& 1; sleep 2; done &
EOF

在while循環(huán)中使用iostat的原因是要輸出date +%T時(shí)間,不然只有數(shù)據(jù),沒(méi)有時(shí)間信息也沒(méi)有什么用

  • 使用at 命令定時(shí)執(zhí)行

at 15:14 today -f /tmp/at_task.sh

出現(xiàn)錯(cuò)誤

Can't open /var/run/atd.pid to signal atd. No atd running?

重啟atd服務(wù)

service atd restart

重新開(kāi)啟at定時(shí)任務(wù)

at 15:14 today -f /tmp/at_task.sh
job 2 at Wed Mar 13 1500 2019

得到如下快照信息
iostat

1535Linux 3.10.0-862.14.4.el7.x86_64 (ip-xxxxx)     03/13/2019      _x86_64_        (4 CPU)

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
vda               0.12     0.07   17.31   19.41   580.79    90.52    36.57     0.09    2.39    4.42    0.57   0.72   2.63
scd0              0.00     0.00    0.00    0.00     0.00     0.00     6.00     0.00    0.28    0.28    0.00   0.25   0.00

sar

0300 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
0302 PM     all      0.25      0.00      0.38      0.00      0.00     99.37
0304 PM     all      1.25      0.13      0.63      0.00      0.00     97.99
0306 PM     all      0.25      0.13      0.50      0.00      0.00     99.12
0308 PM     all      0.50      0.00      0.50      0.63      0.00     98.37

pidstat

0300 PM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
0302 PM  5700      9089      0.00      6.00      0.00  uxxx
0302 PM  5700      9140      0.00      6.00      0.00  uxxx
0302 PM  5700      9292      0.00     10.00      0.00  uxxx
0302 PM     0     18084      0.00      2.00      0.00  bash

kill 掉收集信息的命令

ps -ef | egrep 'iostat|sar|pidstat|while' | grep -v grep | awk '{print $2}' | xargs -l kill

但ps -ef | egrep 命令沒(méi)有獲取到while循環(huán)的pid,不kill掉該while循環(huán),就會(huì)一直對(duì)/tmp/iostat_2019-03-13寫數(shù)據(jù)-_-

通過(guò)lsof 沒(méi)有定位到打開(kāi)文件的進(jìn)程

lsof /tmp/iostat_2019-03-13 
[root@ip-10-186-60-117 ~]#
[root@ip-10-186-60-117 ~]#

通過(guò)lsof 可以定位到打開(kāi)mysql-error.log的進(jìn)程

lsof /opt/mysql/data/5690/mysql-error.log 
COMMAND   PID                USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
mysqld  12858 actiontech-universe    1w   REG  253,1     6345 20083533 /opt/mysql/data/5690/mysql-error.log
mysqld  12858 actiontech-universe    2w   REG  253,1     6345 20083533 /opt/mysql/data/5690/mysql-error.log

可見(jiàn),某進(jìn)程只有一只持有某文件的inode,才可以通過(guò)lsof查看文件在被那些進(jìn)程使用

獲取寫文件的進(jìn)程號(hào)

安裝sysemtap

yum -y install systemtap

SystemTap 是對(duì) Linux 內(nèi)核監(jiān)控和跟蹤的工具
利用systemtap中的inodewatch.stp工具來(lái)查找寫文件的進(jìn)程號(hào)

得到文件的inode

stat -c '%i' /tmp/iostat_2019-03-13 
4210339

獲取文件所在設(shè)備的major,minor

ls -al /dev/vda1
brw-rw---- 1 root disk 253, 1 Jan 30 13:57 /dev/vda1

得到寫文件的pid

stap /usr/share/systemtap/examples/io/inodewatch.stp 253 1  4210339

Checking "/lib/modules/3.10.0-862.14.4.el7.x86_64/build/.config" failed with error: No such file or directory
Incorrect version or missing kernel-devel package, use: yum install kernel-devel-3.10.0-862.14.4.el7.x86_64

根據(jù)系統(tǒng)內(nèi)核版本在kernel-devel rpm build for :ScientificLinux7網(wǎng)站上下載相應(yīng)的kernal-devel包

wget ftp://ftp.pbone.net/mirror/ftp.scientificlinux.org/linux/scientific/7.2/x86_64/updates/security/kernel-devel-3.10.0-862.14.4.el7.x86_64.rpm

rpm -ivh kernel-devel-3.10.0-862.14.4.el7.x86_64.rpm

再次執(zhí)行stap

stap /usr/share/systemtap/examples/io/inodewatch.stp 253 1 4210339
......
Missing separate debuginfos, use: debuginfo-install kernel-3.10.0-862.14.4.el7.x86_64
Pass 2: analysis failed. [man error::pass2]
Number of similar error messages suppressed: 2.

安裝debuginfo kernal

debuginfo-install kernel-3.10.0-862.14.4.el7.x86_64
  Verifying  : kernel-debuginfo-common-x86_64-3.10.0-862.14.4.el7.x86_64                        1/3 
  Verifying  : yum-plugin-auto-update-debug-info-1.1.31-50.el7.noarch                           2/3 
  Verifying  : kernel-debuginfo-3.10.0-862.14.4.el7.x86_64                                      3/3 

Installed:
  kernel-debuginfo.x86_64 0:3.10.0-862.14.4.el7
  yum-plugin-auto-update-debug-info.noarch 0:1.1.31-50.el7

Dependency Installed:
  kernel-debuginfo-common-x86_64.x86_64 0:3.10.0-862.14.4.el7

再次執(zhí)行stap

stap /usr/share/systemtap/examples/io/inodewatch.stp 253 1  4210339
ERROR: module version mismatch (#1 SMP Tue Sep 25 1452 CDT 2018 vs #1 SMP Wed Sep 26 1511 UTC 2018), release 3.10.0-862.14.4.el7.x86_64
WARNING: /usr/bin/staprun exited with status: 1

添加 -v查看詳細(xì)報(bào)錯(cuò)
stap -v  /usr/share/systemtap/examples/io/inodewatch.stp 253 1  4210339
Pass 1: parsed user script and 471 library scripts using 240276virt/41896res/3368shr/38600data kb, in 300usr/20sys/320real ms.
Pass 2: analyzed script: 2 probes, 12 functions, 8 embeds, 0 globals using 399436virt/196284res/4744shr/197760data kb, in 1540usr/560sys/2106real ms.
Pass 3: using cached /root/.systemtap/cache/f5/stap_f5c0cd780e8a2cac973c9e3ee69fba0c_7030.c
Pass 4: using cached /root/.systemtap/cache/f5/stap_f5c0cd780e8a2cac973c9e3ee69fba0c_7030.ko
Pass 5: starting run.
ERROR: module version mismatch (#1 SMP Tue Sep 25 1452 CDT 2018 vs #1 SMP Wed Sep 26 1511 UTC 2018), release 3.10.0-862.14.4.el7.x86_64
WARNING: /usr/bin/staprun exited with status: 1
Pass 5: run completed in 0usr/10sys/38real ms.
Pass 5: run failed.  [man error::pass5]

修改

vim /usr/src/kernels/3.10.0-862.14.4.el7.x86_64/include/generated/compile.h

#define UTS_VERSION "#1 SMP Tue Sep 25 1452 CDT 2018"
改為
#define UTS_VERSION "#1 SMP Wed Sep 26 1511 UTC 2018"

rm -rf  /root/.systemtap/cache/f5/stap_f5c0cd780e8a2cac973c9e3ee69fba0c_7030*

再次執(zhí)行

stap /usr/share/systemtap/examples/io/inodewatch.stp 253 1 4210339

iostat(4671) vfs_write 0xfd00001/4210339
iostat(4671) vfs_write 0xfd00001/4210339
iostat(4671) vfs_write 0xfd00001/4210339
iostat(4671) vfs_write 0xfd00001/4210339
iostat(4671) vfs_write 0xfd00001/4210339
iostat(4671) vfs_write 0xfd00001/4210339
iostat(4671) vfs_write 0xfd00001/4210339
iostat(4671) vfs_write 0xfd00001/4210339
iostat(4671) vfs_write 0xfd00001/4210339
iostat(4671) vfs_write 0xfd00001/4210339
iostat(4677) vfs_write 0xfd00001/4210339
iostat(4677) vfs_write 0xfd00001/4210339
iostat(4677) vfs_write 0xfd00001/4210339
iostat(4677) vfs_write 0xfd00001/4210339
iostat(4677) vfs_write 0xfd00001/4210339
iostat(4677) vfs_write 0xfd00001/4210339
iostat(4677) vfs_write 0xfd00001/4210339
iostat(4677) vfs_write 0xfd00001/4210339
iostat(4677) vfs_write 0xfd00001/4210339
iostat(4677) vfs_write 0xfd00001/4210339
iostat(4683) vfs_write 0xfd00001/4210339
............

可見(jiàn)已經(jīng)得到了寫/tmp/iostat_date +%F文件的進(jìn)程號(hào),但進(jìn)程號(hào)一直在打印出來(lái),因?yàn)楹笈_(tái)進(jìn)程iostat -dx -m 的在while循環(huán)中的,每隔sleep 2s 后就會(huì)執(zhí)行一次iostat 產(chǎn)生新的pid。
那要怎樣才能讓iostat -dx -m 停止寫/tmp/iostat_date +%F文件了?除了重啟大法好 $_$

rm -rf 也不能終止后臺(tái)的while iostat進(jìn)程寫文件,刪除了文件后,while循環(huán)又會(huì)生成新的文件

rm -rf  /tmp/iostat_2019-03-1*

stat /tmp/iostat_2019-03-1*
  File: ‘/tmp/iostat_2019-03-13’
  Size: 146700    Blocks: 512        IO Block: 4096   regular file
Device: fd01h/64769dInode: 4210339     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-03-14 1626.211888899 +0800
Modify: 2019-03-14 1617.854019793 +0800
Change: 2019-03-14 1617.854019793 +0800

正確做法

cat>/tmp/iostat.sh<while [ 1 ];do echo -n `date +%T` >>/tmp/iostat_`date +%F` 2>& 1  && iostat -dx -m 1 1 >>/tmp/iostat_`date +%F` 2>& 1; sleep 2; done &
EOF

at  now + 1 minute  today
bash /tmp/iostat.sh

#這樣就能方便的獲取到進(jìn)程號(hào)pid了
ps -ef | grep iostat
root      8593     1  0 16:16 pts/2    0000 bash /tmp/iostat.sh
審核編輯:郭婷
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11764

    瀏覽量

    219096
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    14

    文章

    10261

    瀏覽量

    91526

原文標(biāo)題:查看 Linux 文件占用進(jìn)程寫數(shù)據(jù)?

文章出處:【微信號(hào):良許Linux,微信公眾號(hào):良許Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    飛凌嵌入式ElfBoard-進(jìn)程之什么是進(jìn)程

    Linux系統(tǒng)中,有些基本命令能夠查看進(jìn)程的信息。例如ps、top、pgrep、pstree等;這些命令為用戶提供了查看和管理Linux
    發(fā)表于 03-02 08:49

    Linux進(jìn)程管理不用愁!這6個(gè)工具幫你搞定90%場(chǎng)景

    Linux 系統(tǒng)中,進(jìn)程是資源分配的基本單位,無(wú)論是服務(wù)器運(yùn)維、程序調(diào)試還是日常使用,掌握進(jìn)程管理工具都是必備技能。今天就帶大家梳理 6 個(gè)最常用的進(jìn)程管理工具,從
    的頭像 發(fā)表于 02-04 16:23 ?1614次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>進(jìn)程</b>管理不用愁!這6個(gè)工具幫你搞定90%場(chǎng)景

    Linux進(jìn)程樹分析工具pstree詳解與實(shí)戰(zhàn)指南(另一視角優(yōu)化Linux系統(tǒng))

    Linux 系統(tǒng)開(kāi)發(fā)與運(yùn)維中,理解進(jìn)程的運(yùn)行狀態(tài)和相互關(guān)系是排查問(wèn)題、優(yōu)化性能的基礎(chǔ)。pstree 作為一款輕量高效的進(jìn)程樹可視化工具,能直觀展示系統(tǒng)中所有進(jìn)程的父子關(guān)系,為系統(tǒng)分
    的頭像 發(fā)表于 02-04 16:21 ?733次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>進(jìn)程</b>樹分析工具pstree詳解與實(shí)戰(zhàn)指南(另一視角優(yōu)化<b class='flag-5'>Linux</b>系統(tǒng))

    飛凌嵌入式ElfBoard-進(jìn)程之什么是進(jìn)程

    是靜態(tài)的,不占用系統(tǒng)資源,只有在被執(zhí)行時(shí)才會(huì)轉(zhuǎn)換為進(jìn)程。程序通常有多種表現(xiàn)形式,常見(jiàn)的表現(xiàn)形式如下源代碼形式:使用編程語(yǔ)言(如:C語(yǔ)言)寫成的一系列語(yǔ)句組成,是人類可以閱讀的文本文件;想要執(zhí)行程序,需要
    發(fā)表于 01-26 08:42

    進(jìn)程通信

    ”,是指用于連接一個(gè)讀進(jìn)程和一個(gè)寫進(jìn)程以實(shí)現(xiàn)它們之間通信的一個(gè)共享文件,又名pipe文件。向管道(共享文件)提供輸入的發(fā)送
    發(fā)表于 01-15 06:16

    深入Linux內(nèi)核:進(jìn)程調(diào)度的核心邏輯與實(shí)現(xiàn)細(xì)節(jié)

    Linux系統(tǒng)中,進(jìn)程調(diào)度就像一位精明的“CPU管理員”——它決定著哪個(gè)進(jìn)程能優(yōu)先使用CPU,多久切換一次進(jìn)程,如何平衡系統(tǒng)響應(yīng)速度與資源利用率。小到桌面應(yīng)用的流暢點(diǎn)擊,大到服務(wù)器的
    的頭像 發(fā)表于 12-24 07:05 ?4324次閱讀
    深入<b class='flag-5'>Linux</b>內(nèi)核:<b class='flag-5'>進(jìn)程</b>調(diào)度的核心邏輯與實(shí)現(xiàn)細(xì)節(jié)

    解析Linux進(jìn)程、線程和協(xié)程

    影響其他進(jìn)程進(jìn)程之間是高度隔離的。Linux中,進(jìn)程進(jìn)程標(biāo)識(shí)符(PID)唯一標(biāo)識(shí)。 進(jìn)程
    發(fā)表于 12-22 11:00

    飛凌嵌入式ElfBoard-文件I/O的了解探究之Linux系統(tǒng)的文件管理機(jī)制

    文件所有者、文件對(duì)應(yīng)的讀//執(zhí)行權(quán)限、文件時(shí)間戳(創(chuàng)建時(shí)間、更新時(shí)間等)、文件類型、文件數(shù)據(jù)
    發(fā)表于 11-18 08:50

    Linux進(jìn)程間通信(IPC)全解析:從管道到?Socket,一篇講透

    在?Linux?世界里,進(jìn)程并非孤立存在。無(wú)論是后臺(tái)服務(wù)協(xié)作(如?Web?服務(wù)器與數(shù)據(jù)庫(kù))、命令行工具聯(lián)動(dòng)(如ps | grep),還是復(fù)雜應(yīng)用的模塊通信,都離不開(kāi) 進(jìn)程間通信(IPC
    的頭像 發(fā)表于 11-14 21:38 ?1.3w次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>進(jìn)程</b>間通信(IPC)全解析:從管道到?Socket,一篇講透

    飛凌嵌入式ElfBoard-系統(tǒng)應(yīng)用編程之文件I/O

    Linux系統(tǒng)中,一個(gè)進(jìn)程可以打開(kāi)的文件數(shù)是有限制,并不可以無(wú)限制打開(kāi)很多的文件,因?yàn)榇蜷_(kāi)文件會(huì)占用
    發(fā)表于 10-24 08:57

    【HZ-T536開(kāi)發(fā)板免費(fèi)體驗(yàn)】—— linux 進(jìn)程創(chuàng)建

    Linux進(jìn)程通信方式有這幾種: 1。管道 2。信號(hào)量 3。消息隊(duì)列 4。共享內(nèi)存 在本帖子中,我會(huì)講解fork(),exit()系統(tǒng)調(diào)用的實(shí)踐。通過(guò)應(yīng)用編程來(lái)實(shí)現(xiàn)系統(tǒng)調(diào)用。 1,進(jìn)程創(chuàng)建 打開(kāi)
    發(fā)表于 09-01 20:49

    Linux系統(tǒng)查看及修改設(shè)備型號(hào)信息,觸覺(jué)智能RK3562開(kāi)發(fā)板演示

    本文介紹Linux系統(tǒng)如何查看及修改設(shè)備型號(hào)信息的方法,適用于想查看設(shè)備型號(hào)信息或者想將設(shè)備型號(hào)信息修改為自己項(xiàng)目的名稱的情況。觸覺(jué)智能RK3562開(kāi)發(fā)板演示。查看設(shè)備信息命令如下:c
    的頭像 發(fā)表于 06-19 15:58 ?1043次閱讀
    <b class='flag-5'>Linux</b>系統(tǒng)<b class='flag-5'>查看</b>及修改設(shè)備型號(hào)信息,觸覺(jué)智能RK3562開(kāi)發(fā)板演示

    Linux系統(tǒng)進(jìn)程管理入門指南

    Linux 系統(tǒng)中,進(jìn)程是正在運(yùn)行的程序的實(shí)例。理解進(jìn)程的管理、查看和控制對(duì)于系統(tǒng)管理員和開(kāi)發(fā)者來(lái)說(shuō)非常重要
    的頭像 發(fā)表于 04-22 14:34 ?1150次閱讀
    <b class='flag-5'>Linux</b>系統(tǒng)<b class='flag-5'>進(jìn)程</b>管理入門指南

    linux服務(wù)器挖礦病毒處理方案

    情況說(shuō)明:挖礦進(jìn)程被隱藏(CPU占用50%,htop/top卻看不到異常進(jìn)程),結(jié)束挖礦進(jìn)程后馬上又會(huì)運(yùn)行起來(lái)(crontab -l查看發(fā)現(xiàn)
    的頭像 發(fā)表于 04-09 10:33 ?1250次閱讀
    <b class='flag-5'>linux</b>服務(wù)器挖礦病毒處理方案

    Linux進(jìn)程狀態(tài)詳解

    對(duì)應(yīng)設(shè)備未就緒那么進(jìn)程就要阻塞等待了。進(jìn)程狀態(tài)變化的表現(xiàn)之一就是要在不同的隊(duì)列中進(jìn)行流動(dòng),本質(zhì)都是數(shù)據(jù)結(jié)構(gòu)的增刪查改!
    的頭像 發(fā)表于 04-01 09:46 ?1168次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>進(jìn)程</b>狀態(tài)詳解