跑步'顶部'命令linux几分钟然后在perl中出来系统命令

时间:2014-03-19 08:29:36

标签: linux perl

我是Perl的新手。我正在使用Web UI,我必须提供CPU和内存监视数据,所以我使用top和gnuplot命令。我可以通过我的终端来做到这一点。但是当我用perl脚本执行相同的命令时它无法正常工作。我遇到的问题是,每当我在终端执行top命令时,我必须等待几分钟,然后我必须使用GNUPLOT进行绘图但是当我在perl中使用系统命令执行相同的工作时我无法延迟。

这就是我正在做的事情

system "top -p 1758 -b -d5 | tee -a stats.log";
system "./top_stats.sh -f stats.log"

这里1758是应用程序ID,我必须监视其顶级数据,stats.log文件是我保存日志然后使用此stats.log文件作为top_stats.sh脚本的输入我正在绘制图形。此top_stats.sh脚本获取日志文件并使用gnuplot绘制数据

现在问题是每当我在终端执行第一个系统命令时,我必须等待一段时间说2到3分钟才能拥有足够数量的数据点,然后我必须按Ctrl + C才能从顶部出来命令然后运行脚本。但是一旦遇到第一个系统命令就会执行它,然后执行下一个命令而没有任何延迟,所以我没有得到任何数据点来绘制图形。有没有什么方法可以执行我的第一个命令并等待3分钟而不退出系统命令然后执行下一个命令。??

1 个答案:

答案 0 :(得分:2)

  

有没有办法可以执行我的第一个命令并等待3分钟而不退出系统命令然后执行下一个命令。??

为什么不指定top的迭代次数。因此,你的命令将为(N-1)* 5 seconsds运行。间隔为5秒的37次迭代需要36 * 5秒:

system "top -p 1758 -b -d5 -n37 | tee -a stats.log && ./top_stats.sh -f stats.log";