Bash: 如何记录执行bash 脚本期间的最高memory/cpu 消耗?
Bash: How to record highest memory/cpu consumption during execution of a bash script?
我在 bash 脚本中有一个函数,它执行一个名为 runBatch 的长进程。基本上 runBatch 将文件作为参数并将内容加载到数据库中。 (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 页面中将每个批次的一些信息(例如时间等)写入 table。
当 runBatch 为 运行 时,我将如何记录最高 memory/cpu 使用率 ,以及时间等?
感谢任何帮助。
编辑:我设法完成了这项工作。我围绕这个脚本添加了一个包装脚本,它在后台运行这个脚本。我用 $! 传递它的 PID!到包装器脚本中的另一个脚本,该脚本每秒监视进程 CPU 和内存使用情况。当 PID 不再存在时,我将所有内容编译到最后的 html 页面中。指点一下。
您应该可以使用 $! 获取进程的 PID,
runBatch $batchFile &
myPID=$!
然后您可以 运行 a top -b -p $myPID
打印出 CPU.
的滴答摘要
内存:
cat /proc/meminfo
接下来随便grep,
Cpu,比较复杂-/proc/stat expained
平均负载:[=15=]
cat /proc/loadavg
时间"runBatch"使用
time runBatch
喜欢
time sleep 10
获得进程的 pid 后(例如 ) you can use (with watch(1) & cat(1) or grep(1)) the proc(5) 文件系统,例如
watch cat /proc/$myPID/stat
(或使用 /proc/$myPID/status
或 /proc/$myPID/statm
,或 /proc/$myPID/maps
作为地址 space,等等...)
顺便说一句,对于 运行 批处理作业,您应该定期考虑 batch (and you might look into crontab(5) 到 运行 事情)
我在 bash 脚本中有一个函数,它执行一个名为 runBatch 的长进程。基本上 runBatch 将文件作为参数并将内容加载到数据库中。 (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 页面中将每个批次的一些信息(例如时间等)写入 table。
当 runBatch 为 运行 时,我将如何记录最高 memory/cpu 使用率 ,以及时间等?
感谢任何帮助。
编辑:我设法完成了这项工作。我围绕这个脚本添加了一个包装脚本,它在后台运行这个脚本。我用 $! 传递它的 PID!到包装器脚本中的另一个脚本,该脚本每秒监视进程 CPU 和内存使用情况。当 PID 不再存在时,我将所有内容编译到最后的 html 页面中。指点一下。
您应该可以使用 $! 获取进程的 PID,
runBatch $batchFile &
myPID=$!
然后您可以 运行 a top -b -p $myPID
打印出 CPU.
内存:
cat /proc/meminfo
接下来随便grep,
Cpu,比较复杂-/proc/stat expained
平均负载:[=15=]
cat /proc/loadavg
时间"runBatch"使用
time runBatch
喜欢
time sleep 10
获得进程的 pid 后(例如
watch cat /proc/$myPID/stat
(或使用 /proc/$myPID/status
或 /proc/$myPID/statm
,或 /proc/$myPID/maps
作为地址 space,等等...)
顺便说一句,对于 运行 批处理作业,您应该定期考虑 batch (and you might look into crontab(5) 到 运行 事情)