如何防止终端损坏?

时间:2019-11-15 12:36:05

标签: shell docker kubernetes watch

我在docker映像中使用了watch命令(在shell脚本中)。

命令:

watch -d -t -g ls -la  ${DIR_TO_WATCH} && sleep 5  && ${COMMAND} | tee

此命令正在监视目录,如果目录结构发生任何更改,我们将执行某些操作。

我正在掌舵图中使用此docker映像。 现在,当我部署图表并检查该Pod的日志时,我的终端坏了,它将不再对用户友好。

命令:

kubectl logs -f pod-name -n name-space

此后,我们需要重置终端设置以使终端正常运行。

有什么办法可以防止这种情况发生?

最好的问候, 阿克沙特

1 个答案:

答案 0 :(得分:0)

通过将watch的输出发送到/dev/null来解决此问题。

watch -d -t -g ls -la ${DIR_TO_WATCH} > /dev/null && sleep 5 && ${COMMAND} | tee

根据我的理解,终端损坏的原因是:

两个命令的日志(来自watch${COMMAND}的日志)同时显示在同一终端上,这导致在默认终端上创建一个新终端(我不是确定如何操作),导致默认终端中断。

尽管${COMMAND}日志对我来说至关重要,但是我不需要查看或监视watch中的日志。因此,我将watch的日志输出发送到/dev/null,它解决了我的问题。

如果我的理解或方法错误,请纠正我。

谢谢。