如何查找并停止锁定Linux中的串口的进程

2 投票
1 回答
3525 浏览
提问于 2025-04-18 17:18

我正在尝试使用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

所以我想这个设备可能被某些东西锁住了。但是我该如何找出是什么在锁住它,以及如何停止它呢?

1 个回答

2

我建议你试试:

lsof /dev/ttyACM1

你可能需要安装lsof这个工具,因为它在你的系统上可能默认没有安装。

根据lsof的手册说明:

lsof会在标准输出中列出关于被进程打开的文件的信息。 [...] 一个打开的文件可以是普通文件、目录、块特殊文件、字符特殊文件、正在执行的文本引用、库文件、流文件或网络文件(比如互联网套接字、NFS文件或UNIX域套接字)。你可以通过路径选择特定的文件或文件系统中的所有文件。

撰写回答