通过 TCSAFLUSH 在 Stop 中对 stdin 的设置失败!- tcsetattr(5:输入/输出错误)

通过 TCSAFLUSH 在 Stop 中对 stdin 的设置失败!- tcsetattr(5:输入/输出错误)

我通过 ssh 登录到一些 Ubuntu 服务器来运行安装脚本。脚本包含以下几行:

echo "deb http://nginx.org/packages/mainline/ubuntu/ bionic nginx" >> /etc/apt/sources.list
echo "deb-src http://nginx.org/packages/mainline/ubuntu/ bionic nginx" >> /etc/apt/sources.list
...........................................
echo 'mysql-server mysql-server/root_password password xxxxxxx' | debconf-set-selections

apt update
apt install nginx -y
apt install mysql-server -y
............................................

在服务器上第一次运行时,我收到错误“通过 TCSAFLUSH 在 Stop 中对 stdin 的设置失败!- tcsetattr(5:输入/输出错误)“。所有命令仍然执行,但终端输出变得混乱,换行错误,因此很难查看命令输出。如果我再次运行此脚本,上述错误将消失,终端输出将逐行整齐地显示。

虽然我的脚本仍然有效,但我需要一个专业的脚本。我该如何修复这个错误?谢谢!

答案1

我猜是这样的。你在脚本的某个时刻会更改用户吗?如果你这样做了,比如“su root”之类的,当前终端可能不属于该用户。然后操作终端的调用可能会失败。在这种情况下,输出可能会乱序。

不确定如何修复它。通过 su 或 sudo 或其他方式从普通用户转换为 root 用户应该能够处理这个问题。

尝试在脚本开始时运行“reset”。如果我是对的,我不确定这会如何工作,但如果我错了,它可能会起作用 :-)

其他要检查的事项是 TERM 是否正确。SSH 从本地计算机传播到远程计算机的环境变量是什么。

祝你好运!

相关内容