我有一个打印到标准输出的控制台。
如何访问命令提示符并将输出静音到 stdout ?
谢谢 。
你有几个选择:
使用您的 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 screen
或tmux
在当前会话中创建额外的控制台窗口。
如果您想访问已经启动进程的控制台,您需要首先使用适当的键盘快捷键停止它,然后让它在后台继续运行。例如在 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
$
有关 的bg
和fg
作业控制 内置命令的更多信息,bash
请查看此处。
如果您不想看到控制台输出,请不要登录控制台。如果您将日志消息写入不应该是控制台的设备,那么您的系统设置错误。您需要在启动时更改可以设置控制台设备的内核命令行。
很可能您有一个没有 GUI 的系统,它作为控制台登录到主显示器。在这种情况下,您可以将 /etc/rsyslog.conf 中的消息严重性从 kern.*(默认值)更改为 kern.err。您也可以考虑修复记录如此多消息的损坏程序。