我希望 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
答案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 -c
也tmux
可能。