首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用bash和watch监控qemu-kvm

使用bash和watch监控qemu-kvm
EN

Stack Overflow用户
提问于 2013-12-03 22:17:09
回答 1查看 1K关注 0票数 3

我正在尝试使用bash脚本和watch来监视一些qemu-kvm进程,以显示内存/cpu使用、资源、端口等一些细节。

最初,我认为我可以从正在运行的进程cmd中获得该信息:

代码语言:javascript
复制
ps -p PID -o cmd | tail -1
qemu-kvm -name TEST -drive file=/img/test.qcow2,if=ide,media=disk,cache=none -daemonize

所以经过大量的测试后,我写了这个小脚本来综合这个问题:

代码语言:javascript
复制
#!/bin/bash
lsof -p PID | grep '/img/' | awk {'print $9'}

当我从命令行执行此脚本时,它的输出看起来完全正确:

代码语言:javascript
复制
bash testscript
/img/test.qcow2

当我尝试与watch一起运行脚本时,问题出现了:

watch -n1 "bash test-script"watch -n1 ./test-script

输出结果为空...

为什么我得不到任何结果?如果有人能帮我理解这一点,我会很高兴的。

编辑:我找到了另一个解决方案。我现在正在通过解析procfs和一些数组来获取信息,以找到IMG信息:

代码语言:javascript
复制
OIFS=$IFS;
IFS='-';  
Array=($(cat /proc/PID/cmdline))
    for ((i=0; i<${#Array[@]}; ++i))
        do
        if [[ "${Array[$i]}" == *drive* ]]; then
            image=${Array[$i]}
            echo $image
        fi
    done
IFS=$OIFS;

这与watch结合起来工作得很好,但我仍然想知道另一种方法有什么问题。lsof是不是受到某种限制??

EN

回答 1

Stack Overflow用户

发布于 2014-03-20 03:54:18

我尝试了与您相同的过程;在我的情况下,唯一的区别是需要sudo。有了它,它就起作用了。同样的问题?

代码语言:javascript
复制
#!/bin/sh
sudo lsof | grep .B.disk.img

watch -n1 sh test
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20353566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档