查找并杀死正在使用串行端口的进程

skr*_*mit 7 process kill ps process-management serial-port

我有多个串行端口连接到每个设备。它们被列为/dev/ttyUSB*。现在,我需要确保在运行kermit脚本之前使用 python 脚本,没有其他进程在使用这些脚本(这样访问不会被拒绝)login_init。我试过pslsof命令。lsof给出了以下输出:

sof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
  Output information may be incomplete.
COMMAND     PID        USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
login_ini 13395       user4    4u   CHR  188,9      0t0  512 /dev/ttyUSB9
python    14410       user4    6u   CHR  188,9      0t0  512 /dev/ttyUSB9
Run Code Online (Sandbox Code Playgroud)

我得到了pid进程的s ,但是当我发出killall命令时,它说没有找到进程,如下所示:

user4@user-pc-4:~/Scripts$ killall -9 13395
13395: no process found

user4@user-pc-4:~/Scripts$ killall -9 14410
13395: no process found
Run Code Online (Sandbox Code Playgroud)

这是正确且唯一的方法还是有更好的方法来做到这一点?

Gil*_*il' 12

killall期望程序名称的子字符串作为参数。要通过进程 ID 终止进程,请使用kill.

您可以使用命令直接终止所有打开文件的进程fuser

fuser -k /dev/ttyUSB9
Run Code Online (Sandbox Code Playgroud)