如何在Linux系统下检测U盘是否已连接

如何在Linux系统下检测U盘是否已连接,第1张

如果没有umount就非法拔出U盘,程序是不知道的,fopen,fwrite等函数都依然返回正确,知启枯道 *** 作系统要把写介质的时候,才会提示I/O错误。可是很多数据都会因为这个不及时的错误报告而丢失。

事实上,USB驱动程序在U盘插入和亏旁衫拔出时,都对系统配置文件做了修改。例如U盘驱动程序会销腔在插入或拔出时往 /proc/scsi/usb-storage-0/0 里面记上 Attached:Yes or No。通过查看这个文件就不难检测U盘是否插入或拔出了。

但是值得注意的是,U盘是否插入的状态与是否挂载(mount)无关。

方法1

利用#fdisk

-l

/dev/sd*

果然发现我得Usb设备,但是却识别为了sdb1。狂悟。

Linux把usb认作sisc设备,但是并不代表就一定是/dev/sda1,也许用特殊的程序可以把U盘固定挂在/dev/sda1(比如autousb)但是,一般不会是固定在/dev/sda1上的。

具体做法相当简单,但值得一提的是#fdisk

-l

/dev/sd*

利用他,我们可以在usb连接好后获知挂接的源路径,这非常重要。

对于当前所有挂接的存储分区,可以用fdisk

-l,或者cat

/proc/partitions

方法2

插入U盘,在虚拟机识别出USB之后,进入root用户,用

fdisk

-l

/dev/sdb

fdisk

-l

/dev/hdb

查看,会看到U盘被识别为sdb(或sdb1,sdb2等)

执行完以上旅拿带命令后,如果没有任何信息显示,你需要先执行以下这此命令

cat

/proc/scsi/scsi

这个文件是否存在,和是否有usb-storage

(USB硬盘对应的设备文件是什么?)

lsmod查看一下是否有usb-storage

scsi_mod

sd_mod

没有就

modprobe

usb-storage

modprobe

scsi_mod

modprobe

sd_mod

然后再试,就可以了

先在/mnt建一个新的文件夹,例如usb

mkdir

/mnt/usb

使用mount命令挂载即可:

mount

-t

vfat

/dev/sdb

/mnt/usb

(多数情况下U盘的分区格式如果是fat32,用vfat)

挂载上了U盘。

使用完了别忘了卸载:

umount

/dev/sdb

或者

umount

/mnt/usb

还要保证当前路径不再在usb里面,否则可能会得到device

busy的警告信息。

PS:如敏源果需要和硬盘间共享数据暂时没有发现好的方法,我只是开拆芦启虚拟机(Linux)的samba

server,然后从windows登录,进行文件共享.


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8277032.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存