m0_66447514 2022-02-13 22:59 采纳率: 50%
浏览 540
已结题

liunx系统下 怎么一插入u盘就让里面的文件自动执行

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

一插入u盘会自动执行文件里面的代码

  • 写回答

13条回答 默认 最新

  • 「已注销」 2022-02-13 23:14
    关注

    Linux系统下是使用udev或者轻量级的类udev工具来自动自动挂载设备,这里以udev为例,来说下怎么设置U盘自动运行脚本。
    1. udev挂载脚本配置

    一般U盘挂载规则文件在这个目录下面:

    /etc/udev/rules.d
    

    我这里的文件内容:

    ACTION!="add",GOTO="fens"
    KERNEL=="sd[a-z][0-9]",RUN+="/usr/sbin/mount-usb.sh %k %n $sysfs{size}"
    LABEL="fens"
    
    

    这个脚本“/usr/sbin/mount-usb.sh”即U盘挂载脚本,当udev检测到U盘挂载事件时,会调用这个脚本。

    2. U盘挂载脚本
    U盘自动运行脚本,就是在U盘挂载脚本里添加的。首先要把自动运行的脚本名字给固定下来,这里暂定为“start.sh”。挂载脚本在挂载过U盘之后,去检测U盘里是否有该脚本,如果有则运行。脚本内容如下:

    
    #!/bin/sh
    RUN="/mnt/usb/start.sh"
    #挂载U盘
    /bin/mount  /dev/$1 /mnt/usb
    #检测是否有自动运行脚本,如果有则执行
    if [ -f $RUN ]
    then
        /bin/sh $RUN &
    fi
    
    

    内容也比较简单,和上次那个脚本启动方式一样,有两点,一是使用/bin/sh启动,这样不用检测脚本是否具有可执行权限;二是加上&符号,后台运行脚本。

    扩展
    这样预留了一个自动运行脚本之后,相当于给系统又增加了一个预留接口一样,当客户需要导出日志或者数据时,而我们系统功能当前没有这个功能时,那就可以先写个脚本,实现客户功能。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(12条)

报告相同问题?

问题事件

  • 系统已结题 2月24日
  • 已采纳回答 2月16日
  • 创建了问题 2月13日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵