我有一张通过 USB 接口连接的 SD 卡。
的输出fdisk -l
表明以下内容:
Disk /dev/sdb: 3965 MB, 3965190144 bytes
mkfs.ext4
我有一个脚本,它使用和命令重新初始化磁盘上的多个分区mkfs.vfat
,所有命令后都跟有sync
。尽管该sync
命令以退出代码 0 结束,但 USB SD 适配器上的指示灯仍在闪烁(表示磁盘活动)。
目前,在我的脚本中我有一个倒计时器,仅倒计时 90 秒,我确定这“足够好”以确保磁盘在下一个操作之前不忙,但这确实是一种黑客行为。
问题:是否有一种通用的方法来检查物理设备是否/dev/sdb
正在被访问,而不管操作如何(即包括重写分区、使用重新读取分区表sfdisk
或访问磁盘上分区上的文件)?
我已经尝试过fuser /dev/sdb
和fuser /dev/sdb*
,但是并没有达到这个目标——当 USB SD 卡适配器上的灯闪烁时,命令并不总是有输出fuser
。
答案1
如果你使用 dd,有一个命令会告诉我们它是否仍在工作
sudo pkill -USR1 -n -x dd
听起来你正在做的事不像那样。
我认为同步后活动灯仍然亮的原因是因为写入 SD 卡的速度往往较慢......或者我完全错过了重点
抱歉,找不到关于检查 /dev/sdb 是否正在使用的问题的答案。
编辑
查看 iotop
sudo apt-get install iotop
然后使用此命令运行它
sudo iotop --only
这样,它只会向您显示正在使用的内容。
这是您要找的吗?如果不是,还有其他建议这里