![Screen 运行命令,分离并获取输出](https://linux22.com/image/1341160/Screen%20%E8%BF%90%E8%A1%8C%E5%91%BD%E4%BB%A4%EF%BC%8C%E5%88%86%E7%A6%BB%E5%B9%B6%E8%8E%B7%E5%8F%96%E8%BE%93%E5%87%BA.png)
我正在尝试编写一个脚本,该脚本连接 /dev/ttyUSB0 并在其上运行命令,然后获取输出。
screen -d -m 'SCREEN COMMAND' -L /dev/ttyUSB0
但这不会创建输出文件。我该如何解决这个问题?有什么想法吗?
答案1
尝试pyserial
使用 python 库。我认为你可以用这个库来解决这个问题。你可以在以下位置找到教程:这里
答案2
screen
让终端会话以分离方式运行是件好事。但是,它并非设计用于在终端上自动运行命令。
为此,开发了另一个工具 -expect
。
expect
允许编写与终端上运行的程序进行类似人类的交互的脚本。
它是一款功能强大的工具,但它也是另一种需要学习的脚本语言,可能有点乏味。如果你熟悉 Perl,Perl 期望模块可以为您节省很多精力(对于其他脚本语言如 Python 也有期望模块)。
还有一点需要注意。就您而言,这似乎/dev/ttyUSB0
是 USB 串行设备,可能随时连接或断开连接。如果您想自动保持与此 USB 串行接口的交互,您可以考虑观察此设备的出现/消失并自动重新连接(例如在 Perl 脚本中),或者添加 udev 规则(在 下/etc/udev/rules.d
),它将在新的 USB 设备连接时自动启动您的处理程序。