有没有任何 shell 命令可以让我知道当前打开的设备或设备已在运行。
例如,我使用minicom打开一个设备,/dev/ttyUSB0
或者/dev/ttyS0
我使用程序打开这个设备后,如何在shell下检查它是否已经打开?我尝试过dmesg
,但似乎对我不起作用
答案1
lsof <your devices>
显示使用您设备的进程。或者strace -p pid
跟踪您知道应该使用您的设备的进程。
答案2
我认为 lsof 是应该使用的工具。它将列出进程正在使用的所有文件。
如果你不知道进程ID,也可以使用fuser。
答案3
块设备
问题中给出的例子是不是块设备,但问题是一般性的,所以如果你的是块设备,使用:
badblocks -n -c1 /dev/device-name 0 0
这将尝试对设备的前 1024 字节进行非破坏性重写
如果正在使用,您将看到:
/dev/device-name is apparently in use by the system; it's not safe to run badblocks!