如何在 Linux 中查找并停止锁定串行端口的内容
Posted
技术标签:
【中文标题】如何在 Linux 中查找并停止锁定串行端口的内容【英文标题】:How to find and stop what has locked a serial port in Linux 【发布时间】:2014-08-14 14:55:11 【问题描述】:我正在尝试使用 pyserial 连接到 makerbot 3d 打印机。给我带来麻烦的连接代码部分是这样的:
import serial
file = serial.Serial('/dev/ttyACM1', 115200, timeout=1)
当我按原样运行它(即只是 python)时,我得到:
[Errno 13] Permission denied: '/dev/ttyACM1'
所以我用超级用户权限(sudo python)运行它,然后我得到了这个:
serial.serialutil.SerialException: pid 3516 could not open port /var/lock/LCK..ttyACM1: locked by PID 1054
所以我猜设备被什么东西锁定了。但是我怎样才能知道是什么锁定了它,以及如何阻止它呢?
【问题讨论】:
您可以使用ps -aux | grep 1054
查找 PID 1054 并查看它是什么程序。
【参考方案1】:
我会尝试:
lsof /dev/ttyACM1
你可能需要获取 lsof,因为它可能没有默认安装在你的 dist 上。
根据 lsof 的手册页:
Lsof 在其标准输出文件中列出有关进程打开的文件的信息 [...] 打开的文件可以是常规文件、目录、块特殊文件、字符特殊文件、正在执行的文本引用、库、流或网络文件(Internet 套接字、NFS 文件或 UNIX 域socket.) 可以通过路径选择特定文件或文件系统中的所有文件。
【讨论】:
你能解释一下这是做什么的吗?以上是关于如何在 Linux 中查找并停止锁定串行端口的内容的主要内容,如果未能解决你的问题,请参考以下文章