簡體   English   中英

USB驅動器檢測(Linux)

[英]USB-drive detection (Linux)

在我的Python程序中,我需要不斷檢查是否有新的USB驅動器連接到運行x86 Linux(Ubuntu)的設備。 不應將其他USB設備誤認為USB驅動器,例如鍵盤,鼠標或其他任何設備。 做這個的最好方式是什么?

在我的特定情況下,我有一個由運行Linux的x86單板PC驅動的自定義媒體播放器設備。

大多數linux系統已經具有某種機制來檢測新的USB設備,並在它們是存儲設備時自動掛載它們,依此類推。 您可以做的是使用python的inotify庫界面來監視/ mnt或/ dev。

要查看其工作原理,請安裝inotify-tools或一些類似的命名包,您可以執行以下操作:

$ inotifywait -m -e create /tmp &

此命令監視(-m)/ tmp以創建(-e create)新文件或目錄。 例如, touch /tmp/x ,它將輸出

/tmp/ CREATE x

您可以從python及其python-inotify或類似的軟件包中執行相同的操作。 pyinotify命令,但更有用的是,您可以編碼等效的python程序:

import pyinotify
wm = pyinotify.WatchManager()
notifier = pyinotify.Notifier(wm)
wm.add_watch('/tmp', pyinotify.IN_CREATE)
notifier.loop()

rm並重新創建/ tmp / x時,將輸出:

<Event dir=False mask=0x100 maskname=IN_CREATE name=x path=/tmp pathname=/tmp/x wd=1 >

請參閱維基的教程等。


在您的情況下,您可以監視/mnt來檢測新安裝的文件系統,或者監視/mnt /dev來發現新設備,例如/dev/sdb/dev/sdb1 Inotify不是遞歸的,因此僅返回直接在受監視目錄中的更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM