免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3633 | 回复: 0
打印 上一主题 下一主题

udev挂载/删除sd卡的问题 [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-03-28 19:06 |只看该作者 |倒序浏览
现在有个sd卡需要自动挂载到系统的/media/usb-sd*下面,正常卸载的情况下可以通过脚本自动删除/media下的目录,但是直接拔掉sd卡的时候却没有调用脚本删除/media下的目录,而且用mount命令发现sd卡设备还是挂载的状态,没有调用相应的卸载脚本。
写了下面的udev规则,不知道怎么搞了,有明白的指点下:

udev规则 90-vfat.rules

  1. KERNEL!="sd[b-z]*", GOTO="media_by_label_auto_mount_end"
  2. # Import FS infos
  3. IMPORT{program}="/sbin/blkid -o udev -p %N"
  4. #IMPORT{program}="/user/bin/env"
  5. #
  6. # # Get a label if present, otherwise specify one
  7. #ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
  8. #ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"
  9. ENV{dir_name}="usb-%k"
  10. #ENV{dir_name}="ntfs"
  11. ENV{DISPLAY}=":0.0"
  12. #
  13. #
  14. # # Global mount options
  15. #ACTION=="add", ENV{mount_options}="relatime"
  16. # # Filesystem-specific mount options
  17. ACTION=="add", ENV{ID_FS_TYPE}=="vfat", RUN+="/bin/vfat-in.sh %k %E{dir_name}"

  18. #
  19. # # Mount the device
  20. #
  21. # # Clean up after removal
  22. ACTION=="remove", ENV{ID_FS_TYPE}=="vfat",RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rm -fr  /media/%E{dir_name}", RUN+="/bin/vfat-out.sh %E{dir_name}"
  23. #
  24. # # Exit
  25. LABEL="media_by_label_auto_mount_end"
  26. #
复制代码
vfat-in.sh

  1. #!/bin/bash
  2. LOCKFILE=/tmp/$2.lock
  3. export LANG=zh_CN.UTF-8
  4. export LANGUAGE=zh_CN.UTF-8
  5. if [ -e $LOCKFILE ]; then
  6.         exit 1;
  7. else
  8.         /bin/touch $LOCKFILE
  9.         /bin/mkdir -p /media/$2
  10.         /bin/mount -o iocharset=utf8 /dev/$1 /media/$2
  11.         if [ $? = 0 ]; then
  12.                 /usr/bin/nautilus --no-desktop /media/$2 &
  13.                 sleep 2
  14.                 /bin/dbus-send --system --type=signal /com/example/msg com.example.msg.msg_signal string:'in' string:'usb'
  15.         else
  16.                 rm -fr /media/$2
  17.                 rm -fr $LOCKFILE
  18.                 exit 1;
  19.         fi
  20. fi
复制代码
vfat-out.sh

  1. #!/bin/bash
  2. LOCKFILE=/tmp/$1.lock
  3. if [ -e $LOCKFILE ]; then
  4.         rm -fr $LOCKFILE
  5.         /bin/dbus-send --system --type=signal /com/example/msg com.example.msg.msg_signal string:'out' string:'usb'
  6. fi
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP