色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

查看Linux文件占用進程寫數據

dyquk4xk2p3d ? 來源:良許Linux ? 作者:良許Linux ? 2022-11-04 16:46 ? 次閱讀

	

背景

centos7 在某一段時間監控報警磁盤使用率達99%,由于監控屬于概要形式信息,沒有快照信息的監控(能發現某進程的I/O,CPU消耗情況),所以需要在服務器上去定時執行統計命令獲取快照信息。 需要通過iostat -dx -k去查看avgqu-sz、await、svctm、%util; sar -u查看%iowait、%user; pidstat -d 查看進程I/O讀寫的快照信息

步驟

  • 生成統計信息文件

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循環中使用iostat的原因是要輸出date +%T時間,不然只有數據,沒有時間信息也沒有什么用

  • 使用at 命令定時執行

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

出現錯誤

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

重啟atd服務

service atd restart

重新開啟at定時任務

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 命令沒有獲取到while循環的pid,不kill掉該while循環,就會一直對/tmp/iostat_2019-03-13寫數據-_-

通過lsof 沒有定位到打開文件的進程

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

通過lsof 可以定位到打開mysql-error.log的進程

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

可見,某進程只有一只持有某文件的inode,才可以通過lsof查看文件在被那些進程使用

獲取寫文件的進程號

安裝sysemtap

yum -y install systemtap

SystemTap 是對 Linux 內核監控和跟蹤的工具
利用systemtap中的inodewatch.stp工具來查找寫文件的進程號

得到文件的inode

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

獲取文件所在設備的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

根據系統內核版本在kernel-devel rpm build for :ScientificLinux7網站上下載相應的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

再次執行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

再次執行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查看詳細報錯
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*

再次執行

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
............

可見已經得到了寫/tmp/iostat_date +%F文件的進程號,但進程號一直在打印出來,因為后臺進程iostat -dx -m 的在while循環中的,每隔sleep 2s 后就會執行一次iostat 產生新的pid。
那要怎樣才能讓iostat -dx -m 停止寫/tmp/iostat_date +%F文件了?除了重啟大法好 $_$

rm -rf 也不能終止后臺的while iostat進程寫文件,刪除了文件后,while循環又會生成新的文件

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

#這樣就能方便的獲取到進程號pid了
ps -ef | grep iostat
root      8593     1  0 16:16 pts/2    0000 bash /tmp/iostat.sh
審核編輯:郭婷
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11310

    瀏覽量

    209597
  • 服務器
    +關注

    關注

    12

    文章

    9184

    瀏覽量

    85479

原文標題:查看 Linux 文件占用進程寫數據?

文章出處:【微信號:良許Linux,微信公眾號:良許Linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    深入解析Linux程序與進程

    什么是程序 一組計算機能識別和執行的指令,用于指導計算機執行特定任務或解決特定問題。程序通常由代碼、數據和資源文件組成,涉及語法、算法和數據結構。為二進制文件 什么是
    的頭像 發表于 12-18 11:01 ?95次閱讀
    深入解析<b class='flag-5'>Linux</b>程序與<b class='flag-5'>進程</b>

    使用lsof實現對linux文件的誤刪除恢復練習

    lsof命令的幫助,恢復該日志數據 確保當前nginx進程運行中 [root@master10 ~]# systemctl status nginx 查看nginx日志文件 [root
    的頭像 發表于 11-24 11:14 ?192次閱讀
    使用lsof實現對<b class='flag-5'>linux</b><b class='flag-5'>文件</b>的誤刪除恢復練習

    一文搞懂Linux進程的睡眠和喚醒

    優先級、文件描述符(記錄當前進程打開的文件)、主要進程標識的進程號和父進程號:
    發表于 11-04 15:15

    Linux lsof命令的基本用法

    linux 系統中,一切皆文件。通過文件不僅僅可以訪問常規數據,還可以訪問網絡連接和硬件。所以 lsof 命令不僅可以查看
    的頭像 發表于 10-23 11:52 ?275次閱讀
    <b class='flag-5'>Linux</b> lsof命令的基本用法

    Linux用戶身份與進程權限詳解

    在學習 Linux 系統權限相關的主題時,我們首先關注的基本都是文件的 ugo 權限。ugo 權限信息是文件的屬性,它指明了用戶與文件之間的關系。但是真正操作
    的頭像 發表于 10-23 11:41 ?358次閱讀
    <b class='flag-5'>Linux</b>用戶身份與<b class='flag-5'>進程</b>權限詳解

    Linux服務器性能查看方法

    Linux服務器性能查看是系統管理員和開發人員在日常工作中經常需要進行的任務,以確保系統穩定運行并優化資源使用。以下將詳細介紹多種Linux服務器性能查看的方法,這些方法涵蓋了CPU、
    的頭像 發表于 09-02 11:15 ?1087次閱讀

    深入探討Linux進程調度器

    Linux操作系統作為一個開源且廣泛應用的操作系統,其內核設計包含了許多核心功能,而進程調度器(Scheduler)就是其中一個至關重要的模塊。進程調度器負責決定在任何給定的時刻哪個進程
    的頭像 發表于 08-13 13:36 ?954次閱讀
    深入探討<b class='flag-5'>Linux</b>的<b class='flag-5'>進程</b>調度器

    Linux查看IP地址的方法

    ifconfig是一個網絡管理工具,用于配置、控制和查詢網絡接口。在許多舊的Linux發行版中,ifconfig是查看和配置網絡接口的主要工具。
    的頭像 發表于 08-07 15:16 ?7601次閱讀
    在<b class='flag-5'>Linux</b>中<b class='flag-5'>查看</b>IP地址的方法

    恒訊科技分析:香港服務器的linux如何顯示文件內容?

    Linux系統中查看文件內容有多種方法,以下是一些常用的命令: 1、使用cat命令:這是最基本和常用的查看文件內容的方法。你可以直接輸入c
    的頭像 發表于 07-19 12:49 ?226次閱讀

    安卓15調整存儲設置,系統細分系統文件與臨時文件

    目前,安卓手機用戶在存儲設置中可查看各類型文件占用空間的詳細數據,如應用程序、文檔、圖片、游戲、音頻等,以及“系統”(System)空間內的基本系統
    的頭像 發表于 05-17 14:32 ?687次閱讀

    linux下查詢進程占用的內存方法有哪些?

    linux下查詢進程占用的內存方法
    發表于 04-08 06:03

    linux怎么查看網卡的收光功率?

    linux怎么查看網卡的收光功率? 在Linux系統中,可以使用一些命令和工具來查看網卡的收光功率。本文將介紹如何使用這些命令和工具來查看
    的頭像 發表于 01-31 14:24 ?3716次閱讀

    淺談Linux進程

    進程和程序的區別: 進程是動態的,程序是靜態的 一、進程的創建(fork()函數) int main(){ pid_t pid; pid=fork(); if(pid?????>0
    的頭像 發表于 01-28 15:54 ?260次閱讀
    淺談<b class='flag-5'>Linux</b>的<b class='flag-5'>進程</b>

    如何查看GD32 Keil和IAR工程的map文件

    我們在設計調試程序時,往往需要知道一個函數或一個變量它在MCU中具體所在的地址以及所占用的空間大小,這時候就需要查看map文件。 那么什么是map文件呢?map
    的頭像 發表于 01-27 09:30 ?2630次閱讀
    如何<b class='flag-5'>查看</b>GD32 Keil和IAR工程的map<b class='flag-5'>文件</b>

    Linux查看IO狀態的常用命令都有哪些呢?

    介紹下Linux的3個常用I/O相關命令,解決I/O壓力過大問題時用iostat,查看磁盤的I/O狀態用iotop,查看I/O進程排名用lsof
    的頭像 發表于 01-16 09:28 ?5403次閱讀
    主站蜘蛛池模板: a级毛片高清免费视频| 色欲国产麻豆精品AV免费| 99免费视频观看| 午夜伦yy44880影院| 乱VODAFONEWIFI熟妇| 国产精品无码AV天天爽人妻蜜桃| 在线综合 亚洲 欧美| 小护士大pp| 日韩欧美中文字幕一区| 免费国产久久啪久久爱| 九九热综合| 国产视频精品在线偷拍| yellow片高清视频免费看| 在线亚洲97se| 亚洲在线无码免费观看| 午夜伦理在线观看| 日韩中文无线码在线视频| 男人插曲女人的叫声| 久久精品国产亚洲AV热无遮挡| 国产精品自在在线午夜蜜芽tv在线| 苍老师刺激的120分钟| AV无码久久无遮挡国产麻豆| 在线欧美 精品 第1页| 亚洲看片无码免费视频| 午夜福利免费视频921000电影 | 青草久久久| 麻豆一二三区果冻| 久久日韩精品无码一区| 狠狠色狠狠色综合日日32| 国产AV在线传媒麻豆| 成年免费三级视频| 扒开女人下面使劲桶视频| 99久久蜜臀AV免费看蛮| 365电影成人亚洲网在线观看| 亚洲一区二区三区91| 亚洲精品无码一区二区三区四虎 | 久久xxxx| 久久电影精品| 久久精品亚洲国产AV涩情| 久爱在线中文在观看| 久久re视频这里精品一本到99 |