如果您运行hdparm -I /dev/X
其中X
是您的SSD设备,它将打印信息(只读操作)类似于此
...
Security:
Master password revision code = 36401
supported
not enabled
locked
not frozen
expired: security count
supported: enhanced erase
...
因此,使用
在not
前面提取frozen
应该很容易
for d in $(ls /sys/block); do
is_frozen=$(hdparm -I /dev/$d | awk '/frozen/ { print $1 }')
echo $is_frozen
done
然而,它始终会返回frozen
,就像not
不在那里一样。
问题
有人可以解释如何从not
行中提取frozen
吗?
答案 0 :(得分:1)
一个可能的原因可能是你在屏幕上看到的不是awk的结果,而是stderr的结果。以下是诊断它的方法:
答案 1 :(得分:1)
在我的系统上,/ dev / sda目前已被冻结,而/ dev / sdb未被冻结,如下所示:
# hdparm -I /dev/sda | grep frozen
frozen
# hdparm -I /dev/sdb | grep frozen
not frozen
只需将$d
添加到echo
命令中即可查看设备及其正确的相应值(我冒昧用更短的{{1}替换冗长的awk
命令}):
grep
如果您想要清理输出,请将# for d in $(ls /sys/block) ; do is_frozen=$(hdparm -I /dev/$d | grep frozen) ; echo $d $is_frozen ; done
HDIO_DRIVE_CMD(identify) failed: Invalid argument
loop0
...
sda frozen
sdb not frozen
替换为ls
:
find
或者# for d in $(find /sys/block -name 'sd*' -exec basename {} \;) ; do is_frozen=$(hdparm -I /dev/$d | grep frozen) ; echo $d $is_frozen ; done
sda frozen
sdb not frozen
代替ls
:
/dev/sd?