#!/bin/sh
if [[ $# -ne 0 ]]; then
echo "USAGE: $0"
exit 1
fi
grep '^[^ ].*$' /proc/iomem | grep 'System RAM' | while read -r LINE; do
X0="0x`echo $LINE | sed 's|^\([^-]*\)-.*|\1|'`"
X1="0x`echo $LINE | sed 's|^[^-]*-\([^ ]*\) .*|\1|'`"
R0=$(( ($(printf %d $X0) / 4096)))
R1=$(( ($(printf %d $X1) / 4096)))
if [ $(( $(printf %d $X1) % 4096 )) -ne 0 ]; then
R1=$(( $R1 + 1 ))
fi
echo "CHUNK: $X0-$X1"
dd if=/dev/mem bs=4096 skip=$R0 count=$(( $R1 - $R0 ))
done
最佳答案
您的脚本将内存转储到其输出,如果您希望对其进行格式化(例如十六进制),您应该通过 xxd
或 od
传递它
关于linux - 编译后它给出了一些奇怪的字符。请解释如何编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4922915/