我在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页面。欢呼为指针。
答案 0 :(得分:3)
您应该能够使用$!,
获取流程的PIDrunBatch $batchFile &
myPID=$!
然后您可以运行top -b -p $myPID
打印出CPU的滴答摘要。
答案 1 :(得分:3)
内存:
cat /proc/meminfo
接下来grep你想要什么,
Cpu,它更复杂 - /proc/stat expained
平均负荷:
cat /proc/loadavg
用于计时" runBatch"使用
time runBatch
喜欢
time sleep 10
答案 2 :(得分:2)