使用udev实现显示器的热插拔和usb的自动挂载

udev:用来监听硬件设备是否发生改变,并可以给硬件设备命名 ,也可以在硬件发生改变之后执行脚本

使用udev检测显示器是否发生变化,然后执行脚本,解决linux显示器热插拔问题

先补充一点:

[[email protected] ~]# cat /sys/class/drm/card0-VGA-1/status
connected

connectd 表示VGA口处于连接状态

拔掉则显示disconnected  脚本里面可以通过这来判断显示器是否连接

vim /etc/udev/rules.d/99-monitor-watch.rules

ACTION=="change", SUBSYSTEM=="drm", RUN+="/usr/local/bin/watch_monitor.sh" #当显示器发生改变的时候执行脚本

vim /usr/local/bin/watch_monitor.sh

#!/bin/bash
DEVICES=$(find /sys/class/drm/*/status)
while read l
do
dir=$(dirname $l);
status=$(cat $l);
dev=$(echo $dir | cut -d\- -f 2-);
if [ $(expr match  $dev "HDMI") != "0" ]
then
#REMOVE THE -X- part from HDMI-X-n
dev=HDMI${dev#HDMI-?-}
else
dev=$(echo $dev | tr -d ‘-‘)
fi
if [ "connected" == "$status" ]
then
echo $dev "connected"
DP1=$dev
fi
done <<< "$DEVICES"
function dp_connect(){
ps aux |grep Xorg|grep tty1|awk ‘{print $2}‘|xargs -x kill
# xrandr --output $DP1 --auto
echo "dp_connect"
}
function dp_disconnect(){
echo "dp_disconnect"
}
test $DP1 &> /dev/null && dp_connect || dp_disconnect

chmod +x /usr/local/bin/watch_monitor.sh

缺点:每次插上显示器  都会回到登录页面,

可以使用xrandr的方式来显示。这样就不会回到登录页面

二: 使用udev解决usb自动挂载

vim /etc/udev/rules.d/100-mountsda.rules

1 KERNEL=="sd[b-z]?",SUBSYSTEM=="block",RUN+="/usr/local/src/mountusb.sh %k $env{ACTION}"
2 KERNEL=="sd[b-z]",SUBSYSTEM=="block",RUN+="/usr/local/src/mountusb.sh %k $env{ACTION}"

因为本地磁盘是sda 所以从b开始

支持ntfs格式需要安装ntfs-3g 包存在扩展源,所以要先安装epel-release,然后编写自动挂载脚本

 1 yum install epel-release -y
 2 yum install ntfs-3g -y
 3
 4 vim /usr/local/src/mountusb.sh
 5
 6 #!/bin/sh
 7 DEV_NODE="/dev/"$1
 8 MOUNT_NODE="/mnt/"$1
 9 echo -e "$(date) \n $2 " >> /tmp/mount.txt
10 if [ $2 == "add" ]; then
11         test ! -e $MOUNT_NODE && mkdir $MOUNT_NODE
12         ntfs-3g -o sync $DEV_NODE $MOUNT_NODE || mount -o sync -o iocharset=utf8 $DEV_NODE $MOUNT_NODE
13         #fi
14 elif [ $2 == "remove" ]; then
15         umount -l $MOUNT_NODE
16         rm -fr $MOUNT_NODE
17 fi
时间: 2024-10-05 03:21:07

使用udev实现显示器的热插拔和usb的自动挂载的相关文章

关于实现udev/mdev自动挂载与卸载

在网上有很多关于讲mdev的自动挂载基本上都是一个版本,经过测试自动挂载确实可行,但是关于自动卸载mdev似乎不能很好的支持,经过修改已经可以做到与udev的效果相似.不能在挂载的目录中进行热插拔,否则会出现问题,不过此问题在下次插入U盘时不会造成影响,可能对U盘有损坏. 本文介绍了mdev与udev两种方法来实现自动挂载,读者可根据需要任选其一即可. 首先介绍一下mdev与udev之间的关系: mdev是busybox中的一个udev管理程序的一个精简版,他也可以实现设备节点的自动创建和设备的

树莓派-USB存储设备自动挂载

简单介绍实现命令行下USB存储设备自动挂载的方法,Linux gnome/kde窗口环境下有移动存储的管理程序,可以实现自动挂载移动存储设备,但是在命令行下 通常需要用mount命令手动挂载USB存储设备. 通过给linux下的设备管理服务udev添加规则配置文件,可以实现命令行下USB存储设备自动挂载. 输入命令: sudo vim /etc/udev/rules.d/10-usbstorage.rules 写入如下脚本到编辑窗口 KERNEL!="sd*", GOTO="

Raspberry Pi 自动挂载USB存储设备

简单介绍实现命令行下USB存储设备自动挂载的方法,Linux gnome/kde窗口环境下有移动存储的管理程序,可以实现自动挂载移动存储设备,但是在命令行下 通常需要用mount命令手动挂载USB存储设备. 通过给linux下的设备管理服务udev添加规则配置文件,可以实现命令行下USB存储设备自动挂载 创建10-usbstorage.rules sudo vim /etc/udev/rules.d/10-usbstorage.rules 复制粘贴以下代码 KERNEL!="sd*",

在GNU/Linux下使用命令行自动挂载与卸载USB磁盘

在命令行环境下如果每次都是靠手动敲入mount与umount命令来挂载与卸载USB磁盘是件很麻烦的事情.尤其是mount命令的参数非常多.比如,磁盘的分区类型(vfat.ntfs等),挂载的目录节点,以何种用户和组的身份来挂载(uid与gid),挂载后文件与文件夹的权限(umask)等等.于是,自己编写了两个脚本程序来分别实现自动挂载与卸载USB磁盘.现在分别介绍如下. 首先是加载USB磁盘的 auto_mount.sh 脚本,使用它可以自动提取与设置mount命令所需的参数,执行mount命令

linux下插入USB设备使用脚本实现自动挂载

某天客户要求说要想在linux OS上插入U盘,然后像和在windows上一样实现自动挂载,在网上没有搜索到有用的信息,有一个软件usbmount,但是试验用不了,有兴趣可以瞧瞧,地址如下 http://usbmount.alioth.debian.org/#what 客户就是客户 于是使用脚本实现这个过程 1. vi mount.sh #!/bin/bash mount_dir=/mnt/usb    #挂载USB设备之后挂载的路径 mount_txt=/etc/mount.txt umoun

openwrt U盘热插拔自动挂载

添加USB相关支持 Kernel modules -> USB Support -> <*> kmod-usb-core. ##默认已经选了 Kernel modules -> USB Support -> <*> kmod-usb-ohci. ##默认已选 old usb1.0 Kernel modules -> USB Support -> <*> kmod-usb-uhci. ## usb1.1 Kernel modules -

树莓派无线网在串口下配置,不需要显示器,RTL8192CU的USB网卡芯片

[本文谢绝转载] [===================先展示一下最后的效果=======================] 树莓派插入网卡,有供电,有TF卡.就可以了 打开终端:直接登录上去,可以看到,当有数据传输时,小灯闪爆你的钛合金眼 [=======================效果展示完毕===============] 开始干活!============================ 为什么用300M带宽的无线网卡? 怎么为树莓派安装新的系统? 为什么是串口,而不是双绞线 怎么

[转]树莓派(Raspberry Pi)USB无线网卡自动连接

Raspberry Pi 使用USB无线网卡的时候不会因为路由重启而掉线. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #!/bin/bash while true ; do    if ifconfig wlan0 | grep -q "inet addr:" ; then       sleep 60    else       echo "Network connection down! Attempting r

Linux系统自动挂载USB移动硬盘

在Linux系统上挂载USB设备并不难,用简单的mount命令就可以轻松挂载USB设备.但是如果你挂载的USB移动硬盘是分为多个分区的话当你重新启动系统时你所挂载的分区有可能会挂载到另外一个路径去.为了避免这个问题,我们必须保障多分区的USB移动硬盘挂载到Linux系统时通过硬件的ID来之别躯体挂载到那个路径上去. 首先为了让linux系统识别NTFS格式硬盘,安装 sudo apt-get install ntft-3g 在系统上创建几个目录用于挂载移动硬盘 sudo mkdir /mnt/d