linux下U盘状态检测

Linux的文件系统是异步的,也就是说写一个文件不是立刻保存到介质(硬盘,U盘等)中,而是存到缓冲区内,等积累到一定程度再一起保存到介质中。如果没有umount就非法拔出U盘,程序是不知道的,fopen,fwrite等函数都依然返回正确,知道操作系统要把写介质的时候,才会提示I/O错误。可是很多数据都会因为这个不及时的错误报告而丢失。
    事实上,USB驱动程序在U盘插入和拔出时,都对系统配置文件做了修改。
    例如U盘驱动程序会在插入或拔出时往 /proc/scsi/usb-storage-0/0 里面记上 Attached:Yes or No
    通过查看这个文件就不难检测U盘是否插入或拔出了。

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

当然这也不是唯一的方法检测u盘的状态。根据内核的设置情况,也可能没有/proc/scsi目录,但是/sys目录下面会有usb的目录,插拔u盘,目录会自动创建和消失,如果上面的方法不可行,那么可以通过检测这些目录来判断u盘或者sd卡等存储设备的存在状态,/sys/目录下找到相关的usb或者sd卡的目录,里面有更详细的设备信息,包括设备出厂id,传输速度,容量等。

时间: 2024-08-01 00:20:59

linux下U盘状态检测的相关文章

Linux下C++内存泄露检测工具

下载安装:http://blog.csdn.net/wanglin754/article/details/7194145 下载地址:http://www.valgrind.org/downloads/current.html#current 安装valgrind tar jxvf valgrind-3.7.0.tar.bz2             注意这里的参数里加了j,表示有bz2属性 cd valgrind-3.7.0 ./configure make make install make

linux下D盘(适用于U盘、硬盘等一切移动存储设备)策略(比格式化猛,由于是不可恢复!)

关于这种资料,在百度上还是比較少的.今天就共享出来,在电脑主机上插上你的U盘,输入下面命令: dd if=/dev/zero of=/dev/sdb  bs=1024 count=102400   然后就等着你的U盘所有资料所有销毁变成一个彻彻底底的空盘吧! dd这个命令是linux用指定的大小的块拷贝一个文件,并在拷贝的同一时候进行指定的转换. 參数介绍: 1. if=文件名称:输入文件名称,缺省为标准输入. 即指定源文件.< if=input file > 2. of=文件名称:输出文件名

linux下U盘挂载

linux下挂载U盘 一.Linux挂载U盘:1.插入u盘到计算机,如果目前只插入了一个u盘而且你的硬盘不是scsi的硬盘接口的话,那它的硬件名称为:sda1,可以用"fdisk -l"来查看当前的硬件名称,再看/dev下面的硬件名称 .2.在mnt目录下先建立一个usb的目录(如:[[email protected] root]# mkdir /mnt/usb)3.挂载U盘:mount -t vfat /dev/sda1 /mnt/usb4.卸载U盘:umount /mnt/usb5

Linux下U盘的挂载,卸载

1, 插入U盘后,在Linux下输入fdisk -l命令,如下所示 表明该设备已经被识别,并且该设备的名称为sdb1. 2, 建立一个挂载usb的挂载目录,(可以自定义目录) #mkdir /mnt/usb 3,   将U盘挂载在到/mnt/usb目录下 mount命令格式:mount [-参数] [设备名称] [挂载点] [其他参数]                            mount -t vfat /dev/sdb1/ /mnt/usb -o iocharset=gb2312

解决linux下U盘变成只读模式

在最近的一个项目里,需要将linux下的些文件拷贝出来.插入U盘后,发现是只读模式. U盘可以写出,不能写入. 折腾了一翻: 最后这样解决的: 将U盘插入到windows下 执行 chkdsk g: /f (g是U盘所在的盘符) 这个过程需要让你修改的都执行N即可.如果你原因删除就Y把! 然后插入linux下,解决. 最后:本人用的ubuntu14版本,我想其他的版本的Linux也大同小异把! 原文地址:https://www.cnblogs.com/phying/p/9018990.html

linux[基础]-06--系统状态检测命令[01]

系统状态检测命令 1.      ifconfig    :用于获取网卡配置与网络状态信息,格式:ifconfig [网络设备] [参数] 其中下面有一个lo是一个本地的回环口 2.      uname     :用于查看系统的内核版本信息,格式为:uname [-a] 查看系统的内核名称,内核发行版本.内核版本.节点名.硬件名称 硬件平台.处理器类型.操作系统等          uname -r 查看内核发行版本号          uname -a 查看全部信息 3.      upti

linux下u盘检测程序

       获得U盘的插入或者拔取得信息的传统方法是在内核级运行hotplug程序,相关参数通过环境变量传递过来,再由hotplug通知其他关注hotplug的应用程序,但是效率比较低.      网上查找知道:    用户空间的程序与设备通信的方法,主要有以下几种方式, 1. 通过ioperm获取操作IO端口的权限,然后用inb/inw/ inl/ outb/outw/outl等函数,避开设备驱动程序,直接去操作IO端口.(没有用过) 2. 用ioctl函数去操作/dev目录下对应的设备,这

Linux下U盘内容为只读文件不能存储其他内容的解决办法

不知道什么情况最近u盘出现问题了,打开u盘后所有的文件上面都有了个上锁的标志,刚开始没太在意,然后想要继续在u盘中存东西时才发现根本存不进去,百度之后才知道是此时u盘内容都是只读文件,那要怎么解决这个问题呢?看了好多人的描述之后,有人说换u盘吧,有的说是格式化u盘,可是u盘中的文件很多,这样子的话总是感觉有点不妥,不过在我的坚持下终于发现了一个好办法来解决此问题. 将u盘插入Linux系统下,直接挂载了.然而u盘内文件都是只读文件,修改权限也不能改. 解决方法如下: (1).在插入u盘之前,先执

linux下U盘的挂载经历

参考资料:http://space.itpub.net/4227/viewspace-625987 环境说明: 1)系统安装在虚拟机中,没有办法上网 2)系统没有安装虚拟工具 U盘挂载在Linux系统 1)将U盘插入U盘插槽 2)检测到U盘,连接到虚拟机中 3)使用指令: # fdisk -l 内容如下: Disk /dev/sda:21.5GB ........... Disk /dev/sdb:7862MB Device Boot  Start  End Blocks Id System /