【问题标题】:How to get the output of at command in current or another terminal window如何在当前或另一个终端窗口中获​​取 at 命令的输出
【发布时间】:2012-06-03 19:47:52
【问题描述】:

我正在尝试使用 Linux at 命令,但似乎我可以看到输出的唯一方法是将其重定向到文件,如下所示:

# at now + 1 minute
warning: commands will be executed using /bin/sh
at> date > afile.txt
at> <EOT>

这按预期工作,但有没有办法让命令(在本例中为date)在终端屏幕上打印输出或打开另一个并在那里输出而不是文件?

我基本上是在尝试安排诸如同步和构建之类的事情。

【问题讨论】:

  • 如果你关闭终端呢? at 命令还应该运行吗? at 与终端分离是有原因的。

标签: linux io


【解决方案1】:
$ tty
/dev/pts/9
$ at now + 1 minute
at> date | tee /dev/pts/9
at> <EOT>
$ dim. juin  3 21:51:00 CEST 2012

或者打开一个新的终端:

$ at now + 1 minute
at> DISPLAY=:0 /usr/bin/xterm -hold -e 'date'
at> <EOT>

或使用zenity 对话框:

$ at now + 1 minute
at> DISPLAY=:0 /usr/bin/zenity --info --text "$(date)"
at> <EOT>

【讨论】:

  • +1 请更正 zenity 命令中的拼写错误:--test 应该是 --text(由于'at least 6 characters' 规则,我自己无法更正。
【解决方案2】:

&gt; /dev/stdout 2&gt; /dev/stderr代替... &gt; afile.txt at&gt;

【讨论】:

    【解决方案3】:

    在每个终端中使用tty 命令来识别它们:

    $ tty
    /dev/pts/0
    
    $ tty
    /dev/pts/1
    

    假设这些 TTY,要将第一个的 stdout 重定向到第二个,请在第一个终端中运行:

    exec 1>/dev/pts/1
    

    注意:现在每个命令输出都会显示在 pts/1

    恢复 pts/0 的默认行为标准输出:

    exec 1>/dev/pts/0
    

    请参阅this video 进行演示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-07
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多