我在我的 ubuntu 系统中遇到了一个问题,因为它是为了测试,所以我通常会发出以下命令:
echo "scsi add-single-device 0 0 0 0" > /proc/scsi/scsi
我只是在使用ata1
端口。
当我完成测试时,我只需发出:
echo "scsi remove-single-device 0 0 0 0" > /proc/scsi/scsi
但是,当我开始使用 ata 命令时,这个过程不再起作用,因为它附加到系统。
例如,
前:
此命令始终返回/dev/sdb
已安装的状态,而另一个命令只是卸载驱动器,而不是将其连接到系统。
现在:
我提到的这个命令似乎有效,但是对于我测试的每个驱动器,都会继续用下一个字母填充缓存,例如:
第一次测试:/dev/sdb
第二次测试:/dev/sdc
等等,直到我用完了信件,因为系统无法发出超过dev/sdz
有人能告诉我如何清除缓存或如何解决这个问题吗?
我将非常感激任何帮助。
答案1
我发现了实际“缓存”的问题。
我有一段代码,它让文件描述符在每次驱动器测试中打开,直到程序填满 fd 分配的所有剩余空间。错误出现在 python 调用中,open()
因为它使用参数os.O_RDWR
而不是os.O_RDONLY.
os.O_RDWR
在发出 ATA 命令后,让所有文件描述符都打开。将其更改为os.O_RDONLY
内存缓冲区后,即可读取文件描述符,并且文件描述符已正确关闭。
希望这能给处于困境中的任何人提供帮助。