【问题标题】:How to get PIDs using a mount point before removed by udev on plug out如何在 udev 移除之前使用挂载点获取 PID
【发布时间】:2016-07-13 05:54:45
【问题描述】:

我想知道在卸载之前使用任何挂载点获取进程的机制,并在 udev 删除 Debian OS 中的存储设备时将其删除。

当我跳过 udev 规则文件中的删除目录时,它会得到很多进程,包括内核等。

如果有人在笔式驱动器中上传或下载时从系统中移除笔式驱动器,我想在屏幕上实现一条警报消息。

请帮帮我。

【问题讨论】:

  • 您查看过/proc/ 文件系统吗?

标签: c linux debian udev


【解决方案1】:

您可以使用lsof 命令。该命令列出了哪个进程正在使用哪个文件。输出包含命令、PID、USERID、文件类型、设备、边、文件名等。 您可以使用 grep 查找挂载点以查找谁在使用您的设备。

语法:

#lsof  | grep <mount point>

#lsof  <mount point>

其他选项是使用fuser 命令。它显示正在使用给定文件/目录的进程 ID

语法:

#fuser <mount point >

【讨论】:

  • 感谢您的回复。我是通过定影器得到的。我的问题是用户删除后如何处理。在我的系统中,热插拔由 udev 规则管理。其显示指定的文件名 /media/pen-drive 不存在。删除动作是 ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/sh -c '/bin/fuser -m /media/%E{dir_name'", RUN+="/bin /umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"
【解决方案2】:

感谢您的回复。我是通过定影器得到的。我的问题是用户删除后如何处理。在我的系统中,热插拔由 udev 规则管理。其显示指定的文件名 /media/pen-drive 不存在。删除操作是 ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/sh -c '/bin/fuser -m /media/%E{dir_name'", RUN+="/bin/umount - l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    • 1970-01-01
    • 2015-01-02
    • 2021-09-29
    • 1970-01-01
    相关资源
    最近更新 更多