0

我有一个打印到标准输出的控制台。

如何访问命令提示符并将输出静音到 stdout ?

谢谢 。

4

2 回答 2

0

你有几个选择:

  • 使用您的 shell 重定向和进程控制运算符将命令的标准输出和标准错误发送到文件,同时在后台启动它:

    例如在bash

    make all 1>make.log 2>&1 &
    

    更好的是,您可以为每个流使用单独的文件:

    make all 1>make.out 2>make.err &
    

    该命令在后台启动,shell 将在完成时通知您。同时,您可以使用文本查看器,甚至只是tail在输出文件上查看发生了什么。

    如果错误消息很少见并且您想立即看到它们,则只能重定向标准输出:

    make all 1>make.log &
    

    如果您根本不关心控制台消息,只需将它们发送到/dev/null

    make all 1>/dev/null &
    
  • 如果您对新控制台的关注是登录过程,您可以使用工具,例如GNU screentmux在当前会话中创建额外的控制台窗口。

  • 如果您想访问已经启动进程的控制台,您需要首先使用适当的键盘快捷键停止它,然后让它在后台继续运行。例如在 Linux/bash中使用Ctrl+Z快捷方式:

    $ make all
    1/10
    2/10
    ^Z
    [1]+  Stopped                 make all
    $ bg
    [1]+ make all &
    3/10
    $ 4/10
    5/10
    6/10
    7/10
    8/10
    9/10
    10/10
    
    [1]+  Done                    make all
    $
    

    不幸的是,没有简单的方法来重定向/静默已经运行的进程的输出 - 消息仍然会淹没控制台。

    当然,如果您只需要短期访问控制台(例如检查输出文件),您可以在完成之前不要重新启动该过程:

    $ make all
    1/10
    2/10
    ^Z
    [1]+  Stopped                 make all
    $ ls
    1  2  Makefile
    $ fg
    make all
    3/10
    4/10
    5/10
    6/10
    7/10
    8/10
    9/10
    10/10
    $ 
    

    有关 的bgfg作业控制 内置命令的更多信息,bash请查看此处

于 2012-08-07T15:51:53.680 回答
0

如果您不想看到控制台输出,请不要登录控制台。如果您将日志消息写入不应该是控制台的设备,那么您的系统设置错误。您需要在启动时更改可以设置控制台设备的内核命令行。

很可能您有一个没有 GUI 的系统,它作为控制台登录到主显示器。在这种情况下,您可以将 /etc/rsyslog.conf 中的消息严重性从 kern.*(默认值)更改为 kern.err。您也可以考虑修复记录如此多消息的损坏程序。

于 2012-08-07T11:11:07.933 回答