【问题标题】:Using watch with ssh通过 ssh 使用 watch
【发布时间】:2018-06-04 19:28:32
【问题描述】:

我有以下在本地机器上正常运行的命令。

watch -t -n1 "echo `date '+%Y-%m-%d %H:%M:%S'` | tee -a Time.txt" &>/dev/null &

但是当我从远程机器运行它时,我不会创建预期的输出,即 Time.txt 没有创建并且不会作为后台进程运行。

ssh ipaddress watch -t -n1 "echo `date '+%Y-%m-%d %H:%M:%S'` | tee -a Time.txt" &>/dev/null &

请帮助我。我尝试了多种选项,例如将 ', " 用于 watch 命令,但它并没有帮助我。

【问题讨论】:

  • Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super UserUnix & Linux Stack Exchange 会是一个更好的提问地点。
  • 这只是关于编程。我陷入了自动化脚本中。感谢是否有人可以提供帮助

标签: linux shell ssh watch


【解决方案1】:
  • 无需使用echo输出子shell的结果。
  • 无需使用tee 附加到文件。
  • 无需使用watch 休眠一秒。

试试这个吧。

ssh -t ipaddress 'while sleep 1; do date +%Y-%m-%d\ %H:%M:%S >> Time.txt; done &'

【讨论】:

  • 谢谢。它正在工作,即每 1 秒更新一次远程机器时间。但是如何停止后台进程。有什么办法吗?
  • 你必须存储PID of the background process才能杀死它。
  • 非常感谢 ceving。我杀死了所有在后台运行的睡眠进程并且它起作用了。
【解决方案2】:

您的 shell 语法不正确:explainshell

并在运行命令时抛出此错误:

Error opening terminal: unknown.

您应该使用选项-t

-t      Force pseudo-tty allocation.  This can be used to execute arbitrary screen-based programs on a
        remote machine, which can be very useful, e.g. when implementing menu services.  Multiple -t
        options force tty allocation, even if ssh has no local tty.

并引用整个命令并将其传递给 ssh,并在必要时转义字符。附explainshell

ssh -t ipaddress 'watch -t -n1 "echo `date +%Y-%m-%d\ %H:%M:%S` | tee -a Time.txt" \&\>/dev/null \&'

【讨论】:

  • 它不工作。我收到错误打开终端:未知,即使我放了 -t 选项。
猜你喜欢
  • 2013-03-22
  • 2017-07-14
  • 1970-01-01
  • 2020-02-09
  • 2014-12-12
  • 2015-05-17
  • 2012-07-18
  • 1970-01-01
  • 2021-03-09
相关资源
最近更新 更多