如何检查 CD 当前是否正在 Linux 上使用?

如何检查 CD 当前是否正在 Linux 上使用?

在将 CD 从虚拟机中移除之前,如何检查它是否正在使用?它目前安装在 Ubuntu 14.04 机器上的 /dev/sr0 上,我需要卸载它以进行数据存储迁移。

我知道它没有被写入,但我需要知道它是否被读取。

答案1

正确执行此操作的唯一方法是尝试卸载虚拟机内的 CD。

我通常使用的一般程序是:

  1. 检查它是否已安装,最好以 root 身份运行:

    grep /dev/sr0 /proc/self/mounts
    

    如果输出任何文本,则表明该 CD 已安装并且可能正在使用(但即使未使用也不安全移除),否则您可以假设它未被使用,除非您打开了 CD 刻录机软件。

  2. 尝试卸载它(必须以 root 身份进行):

    umount /dev/sr0
    

    如果成功且无错误,则此时您可以确定 CD 未在使用中,并且可以在虚拟机管理程序端安全地将其移除。如果它抱怨未/dev/sr0安装,请重新检查第一步,否则,请继续下一步。

  3. 弄清楚什么在使用它(也必须以 root 身份完成,并且您可能必须安装命令fuser):

    fuser -m $(grep /dev/sr0 /proc/self/mounts | cut -f 2)
    

    这将确定其安装位置,然后为每个正在使用的文件输出一行,以文件名称开头,后跟使用该文件的 PID 的空格分隔列表。然后,您可以在大多数系统监视软件(如)中查找这些 PID 属于哪些进程top。如果您不关心它们是什么,您可以在上述命令-k -TERM之前添加-m,它将为您向所有进程发送 SIGTERM(相当于调用kill每个 PID)。处理完所有这些后,您可以重复步骤 2,命令umount应该可以正常工作。

请注意,这种方法假设不涉及任何挂载命名空间,除非您使用容器,否则通常是正确的(在这种情况下,您可能必须在每个正在运行的容器中执行所有这些步骤)。

相关内容