[英]Bash: How to record highest memory/cpu consumption during execution of a bash script?
我在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的滴答摘要。
記憶:
cat /proc/meminfo
接下來grep你想要什么,
Cpu,它更復雜 - / proc / stat expained
平均負載:
cat /proc/loadavg
用於定時“runBatch”使用
time runBatch
喜歡
time sleep 10
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.