检查USB设备是否处于空闲状态,LINUX

检查USB设备是否处于空闲状态,LINUX,linux,usb,rename,python-idle,pen,Linux,Usb,Rename,Python Idle,Pen,我有一个简短的问题,但我找不到答案。 在linux(或python)中是否可以查看外部usb笔驱动器是否处于空闲状态? 对于我正在编写的python脚本,我需要知道这一点。 我需要重命名一个外部usb笔驱动器上的文件夹,只要没有写入任何内容 编辑:我知道有lsof命令来列出打开的文件lsof/theDir'只能工作一半。当复制到USB的进程仍在运行时,它工作正常。但当过程停止时,lsof什么也不显示。但操作系统仍在从其缓冲区写入USB。您可以通过查看/sys/block//stat检查是否已处理

我有一个简短的问题,但我找不到答案。 在linux(或python)中是否可以查看外部usb笔驱动器是否处于空闲状态? 对于我正在编写的python脚本,我需要知道这一点。 我需要重命名一个外部usb笔驱动器上的文件夹,只要没有写入任何内容


编辑:我知道有lsof命令来列出打开的文件lsof/theDir'只能工作一半。当复制到USB的进程仍在运行时,它工作正常。但当过程停止时,lsof什么也不显示。但操作系统仍在从其缓冲区写入USB。

您可以通过查看
/sys/block//stat
检查是否已处理所有I/O。 第九列包含当前正在运行的I/O数。检查
一旦该数值为零,设备应处于空闲状态

要强制立即写入所有缓冲区,可以执行
sync
并等待它返回


尽管如此,如果您不控制写入,请注意这里存在争用条件-在您确定设备空闲后,其他进程可能会开始向其写入。

您可以通过查看
/sys/block//stat
来检查是否已处理所有I/O。 第九列包含当前正在运行的I/O数。检查
一旦该数值为零,设备应处于空闲状态

要强制立即写入所有缓冲区,可以执行
sync
并等待它返回


不过,请注意,如果您不控制写入,则此处存在争用条件-在您确定设备空闲后,其他进程可以开始向其写入。

但您将面临争用:您检查,USB空闲,然后您将重命名文件夹,但速度会加快并开始执行某些操作。然后在非空闲状态下进行重命名。您需要卷/目录锁之类的东西。也许卸载卷并装载到私有目录中的其他地方?据我所知,Linux可以处理这种情况。我只需要从一个usb驱动器备份到另一个。我开始在目标位置创建“不完整文件”文件夹。之后,我开始复制。当复制完成并且我有了所有的文件后,我想将该文件夹重命名为complete+currentDate。但您将进行一场竞赛:您检查,USB空闲,然后您将重命名该文件夹,但某些操作会加快并开始执行某些操作。然后在非空闲状态下进行重命名。您需要卷/目录锁之类的东西。也许卸载卷并装载到私有目录中的其他地方?据我所知,Linux可以处理这种情况。我只需要从一个usb驱动器备份到另一个。我开始在目标位置创建“不完整文件”文件夹。之后,我开始复制。复制完成后,我有了所有文件,我想将该文件夹重命名为complete+currentDate。是的,我有一个raspberry pi,如果我使用sync,传输速度约为400 KB/s,启用fat flush选项后,我的速度大约为5 MB/s。是否需要检查写入是否在不使用sync的情况下完成?您不需要使用sync进行备份,操作系统将自动处理。更新了我的答案-/sys/block//stat可能就是您要找的。嗯,我想当我们谈论同步时,我们有一个误解。我不是说在同步模式下安装文件系统。我说的是执行sync命令。您甚至可以在不使用sudo的情况下将其称为非root用户。返回后,您可以相对确定复制操作已完成。看,是的,我有一个树莓圆周率,如果我使用同步,传输速度约为400 KB/s,启用了fat flush选项,我的传输速度约为5兆字节/s。没有什么东西可以检查写入是否在不使用同步的情况下完成吗?你不需要使用同步进行备份,操作系统会自动处理。更新了我的答案-/sys/block//stat可能就是你要找的。嗯,我想我们在谈论同步时有一个误解。我不是说在同步模式下安装文件系统。我说的是执行sync命令。您甚至可以在不使用sudo的情况下将其称为非root用户。返回后,您可以相对确定复制操作已完成。看见