[英]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.