后台无法执行beeline

原因:beeline 为了更好地展示漂亮的表格,使用 jline.Terminal.setupTerminal().getTerminalWidth() 获得终端的宽度,而该方法是通过调用 stty 来设置终端属性。当 beeline 以后台模式运行,调用 stty 时,内核的终端驱动程序在会发送一个 SIGTTOU 信号,该信号在没有被捕获进行特殊处理时,默认是中止当前进程。

后台模式运行 beeline 更多是因为通过编写脚本的方式来调用,因此对于表格格式,我们并不 care 它是否漂亮,而 jline 库提供 -Djline.terminal=jline.UnsupportedTerminal 参数,可以将终端类型设置为 UnsupportedTerminal,不再调用 stty ,进而避免了 beeline 以后台模式运行时,接收到 SIGTTOU 信号。

原文链接:https://blog.csdn.net/m0_47507068/article/details/107167830

解决办法

  1. 临时设置环境变量

export HADOOP_CLIENT_OPTS="$HADOOP_CLIENT_OPTS -Djline.terminal=jline.UnsupportedTerminal"
  1. 通过脚本后台执行

#!/bin/bash
export /etc/profile
nohup beeline -u jdbc:hive2://172.25.90.16:50000 -n hadoop -f test.sql  > log &




后台无法执行beeline
https://www.hechunyu.com/archives/1698222489306
作者
chunyu
发布于
2022年08月25日
许可协议