我知道如何重定向输出以及如何在 bash 中抑制它们。现在,假设我不小心忘了输出重定向部分的命令(例如追加2>&1或> /tmp/mystdout)和我的后台进程已经运行一段时间,我还可以更改为stdout与stderr正在写入?我真的不想杀死并重新启动应用程序。
更具体地说,正如吉尔斯在他的评论中所问的那样,我想在这些场景中具体地摆弄它:
stderr到stdout或两者的结合
例如,我有 Apache 运行,我可以看到文件描述符:
/proc/8019/fd/0 -> /dev/null
/proc/8019/fd/1 -> /dev/null
/proc/8019/fd/2 -> /var/log/apache2/error.log
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个简单的脚本来监视我的网络状态,而没有所有ping的输出:
ping -q -c 1 google.com > /dev/null && echo online || echo offline
Run Code Online (Sandbox Code Playgroud)
问题是,当我没有连接时,我的输出中仍然收到一条错误消息:
ping: unknown host google.com
offline
Run Code Online (Sandbox Code Playgroud)
如何在输出中保留此错误消息?