在后台运行 picocom,无需打开会话

在后台运行 picocom,无需打开会话

我希望 picocom 在远程计算机上记录串行数据,而不必保持与远程计算机的 ssh 会话处于活动状态。

我努力了:


picocom <my options>

当我注销时,它就会消失。


picocom <my options> & 

终端上没有输出,并且退出picocom使C-a C-x作业保持停止状态,它不会杀死它(我需要kill -9,一个简单的kill作业不起作用。然后我必须手动清除 tty 锁/var/lock/)。


picocom <my options> > tmp/data.log&

然后在另一个 ssh 会话中:

tail -f tmp/data.log

文件中没有数据输出data.log


bash -c "picocom --baud 115200 /dev/ttyACM1 > /home/pi/tmp/data.log" &

也没有输出到文件。该作业立即变为“已停止”。


nohup sh -c "picocom --baud 115200 /dev/ttyACM1 > /home/pi/tmp/data.log" &

我在尾部文件中得到了开始输出picocom,但随后作业退出了。


也很高兴知道:picocom不会对 做出反应C-z

我的问题是:

  • 是否可以picocom在后台运行?
  • 有哪些替代方法可以在没有打开会话的情况下记录串行终端?

答案1

另一种方法是设置设备stty, 那么和猫一起读:

stty <my options>
nohup sh -c "cat /dev/ttyACM0 > data.log" &

答案2

我建议使用分离。 dtach 允许您在后台运行程序。我已经成功地将它与 picocom 一起使用来进行串行日志记录,而无需打开会话(在远程 Raspberry Pi 上)。

我还建议使用 picocom 的内置日志记录-g将串行数据保存到文件中。

安装 dtach 后,您可以使用 picocom 运行它,例如:

dtach -A /tmp/dtach picocom --baud 115200 /dev/ttyACM1 -g /home/pi/tmp/data.log

然后,一旦 picocom 运行,您可以将其置于后台C-\

重新加入“dtached”进程使用;

dtach -a /tmp/dtach

我发现 picocom 确实在后台写入日志文件,因此我可以cat /home/pi/tmp/data.log在 picocom 仍在运行但“dtached”的情况下

答案3

假设是指用户会话,您可能可以使用screen-X命令发送到正在运行的屏幕会话的选项以及stuff将击键发送到当前窗口的命令。

screen -dmS newScreen bash
screen -S newScreen -X stuff "picocom <options>\n"
screen -ls
screen -r <pid>

请注意在下一行加上引号,以便执行命令。*

...还没有检查是否bash -ctmux可能。

相关内容