我是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分钟而不退出系统命令然后执行下一个命令。??
答案 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";