【问题标题】:How can I prevent my terminal from breaking?如何防止终端损坏?
【发布时间】:2019-11-15 12:36:05
【问题描述】:

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

命令:

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

此命令正在监视一个目录,如果目录结构有任何变化,我们会执行某些操作。

我在我的 helm 图表中使用这个 docker 图像。 现在,当我部署图表并检查该 pod 的日志时,我的终端坏了,它不再是用户友好的。

命令:

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

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

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

最好的问候, 阿克沙特

【问题讨论】:

  • 你能澄清一下分布吗?有多个观看节目
  • 问题不是写代码。可能是 Unix & Linux 的主题,但不在这里。
  • 顺便说一句,阅读BashFAQ #50 了解${COMMAND} 的使用。应该使用数组而不是字符串来存储参数列表以供以后执行。
  • @dash-o 我正在使用 centos 7.7 并从 procps-ng 3.3.10 观看。
  • 另外,我发现this link 在那里他们谈到了使用“fold -s”和手表。这在这里有用吗?

标签: shell docker kubernetes watch


【解决方案1】:

通过将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,它解决了我的问题。

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

谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    • 2014-06-03
    • 2023-03-03
    • 1970-01-01
    • 2012-12-08
    • 2021-08-17
    • 1970-01-01
    相关资源
    最近更新 更多