我在bash脚本中有一个函数,该函数执行一个名为runBatch的长进程。基本上,runBatch将文件作为参数并将内容加载到db中。 (runBatch只是用于加载文件内容的数据库命令的包装函数)
我的函数有一个类似于下图的循环,当前正在记录变量的开始时间和经过时间。
for batchFile in `ls $batchFilesDir`
do
echo "Batch file is $batchFile"
START_TIME=$(($(date +%s%N)/1000000))
runBatch $batchFile
ELAPSED_TIME=$(($(($(date +%s%N)/1000000))-START_TIME))
IN_SECONDS=$(awk "BEGIN {printf \"%.2f\",${ELAPSED_TIME}/1000}")
done
然后,我将有关每个批次的一些信息(例如时间等)写入到正在生成的html页面中的表中。
如何在runBatch运行时记录最高的内存/CPU使用率以及时间等信息?
任何帮助表示赞赏。
编辑:我设法做到这一点。我在该脚本周围添加了包装器脚本,该脚本在后台运行该脚本。我用$传递它的PID!到包装脚本中的另一个脚本,该脚本每秒监视一次CPU和内存使用情况。当PID不再存在时,我将所有内容最终编译为html页面。为指针欢呼。
最佳答案
您应该可以使用$!获得过程的PID。
runBatch $batchFile &
myPID=$!
然后可以运行
top -b -p $myPID
以打印出CPU的滴答滴答摘要。