我在Linux [Red Hat]上运行C ++程序,该程序在硬盘上创建临时文件以计算其结果。我需要知道该程序在运行时从磁盘中使用了多少空间。我无法更改源代码以保留文件,因此我可以在生成结果之前和之后减去Program文件夹的大小。在这种情况下,我可以使用任何分析工具或命令行来帮助我。
答案 0 :(得分:0)
我想,你可以在终端运行程序之前和之后使用du -h /path/todir
。
du估计文件空间使用情况
-h, - 人类可读 人类可读格式的打印尺寸(例如,1K 234M 2G)
如果您需要更多选项,请查看man du
答案 1 :(得分:0)
您可以使用/ proc / [pid] / io中维护的统计数据。
来自/ proc手册页:
此文件包含进程的I / O统计信息 例如:
# cat /proc/3828/io
rchar: 323934931
wchar: 323929600
syscr: 632687
syscw: 632675
read_bytes: 0
write_bytes: 323932160
cancelled_write_bytes: 0
write_bytes: bytes written
Attempt to count the number of bytes which this process
caused to be sent to the storage layer.
您可以编写类似的脚本,
#!/bin/bash
c=0
echo $1
rm /tmp/writtenBytes.txt
psout=`ps aux | grep "$1" | grep -v $0 | grep -v grep `
while [[ "$psout" != "" ]]
do
pid=`echo $psout | awk '{print $2}'`
cat /proc/$pid/io | grep write | grep -v cancelled >> /tmp/writtenBytes.txt
psout=`ps aux | grep "$1" | grep -v $0 | grep -v grep`
echo $psout
sleep 1
done
以
运行此脚本bash -x getIO.sh "postgres: stats collector"
此脚本将创建文件/tmp/writtenBytes.txt,其中包含由名为“postgres:stats collector”的进程写入的字节数