如何在tmux中获取send-key的结果?

ssm*_*017 7 tmux

我正在使用tmux来运行服务器控制台.要检查控制台是否正在应答,我想使用send-keys在控制台上运行命令:

tmux send-keys -t mysess:mywin "show info" Enter
Run Code Online (Sandbox Code Playgroud)

(实际上,我目前正在将完整的控制台输出记录到文件中并读取最后一行,但我希望存在更好的解决方案.)

tmux pipe-pane -o -t mysess:mywin 'cat >> mysess-mywin.log'
Run Code Online (Sandbox Code Playgroud)

小智 6

您如何访问输出的上下文将影响此解决方案是否更好,但这可能有效:

tmux send-keys -t <session:win.pane> '<command>' Enter
tmux capture-pane -t <session:win.pane> 
tmux show-buffer
Run Code Online (Sandbox Code Playgroud)

您应该能够使用窗格的大小-S-E选项capture-pane,以及准确捕获输出.如果您如此倾向,您还可以使用show-panes一个小的正则表达式来捕获窗格的高度,然后只使用-S <height - 1>捕获最后一行.

然后从另一个程序中读取它就好了(例如,在python中):

print Popen(['tmux', 'show-buffer'], stdout=PIPE).communicate()[0]
Run Code Online (Sandbox Code Playgroud)


小智 0

一种选择是使用运行“show info”的 send-keys 调用脚本,并让脚本“send-keys”将结果返回到您所在的 tmux 会话。仅当您一开始就在 tmux 中时,这才有效。