【发布时间】:2017-09-06 10:16:40
【问题描述】:
我正在尝试编写一个简单的脚本来持续监控某个进程的内存使用情况。所以我尝试使用 'top' 和 grep 命令来捕获某个进程的内存使用情况,以及运行 free -m 命令并将其输出写入文本文件。
top | grep --line-buffered -i process_name >> /home/output_txt1 &
while (1)
free -m >> /home/output_txt2
sleep 2
end &
但是,当我运行命令时,我得到了
- 暂停(tty 输出)顶部 | grep --line-buffered -i process_name >> /home/output_txt1 &
我做错了什么,如何实现我想要的?知道我在使用 while 循环之前也尝试过使用“watch”,但它也不起作用。
【问题讨论】:
-
来自
man top: -b : 批处理模式操作 以“批处理模式”启动 top,这对于将输出从 top 发送到其他程序或文件可能很有用。在这种模式下,top 将不接受输入并运行,直到您使用 '-n' 命令行选项设置的迭代限制或直到被杀死。你可以试试 -b 选项。 -
感谢您的提示,我现在使用了 -b; top 命令可以正常工作。但是,我从脚本中想要的并没有发生,我发现它持续运行的 top 命令并正确写入文件,而“free -m”命令只运行一次。是不是类似于“top”命令劫持了进程,不允许“while”循环再次执行?