咨询一下 Linux 信息输出重定向的问题

2023-02-15 10:52:18 +08:00
 mk3s
我们常用>/dev/null 2>&1 来屏蔽执行时标准输出和错误的信息,但是类似于告警或者其他不知道如何归类的信息,前面的命令是没法屏蔽的,有哪个大佬只知道要怎么屏蔽除了 1 和 2 以外的所有信息么,我上 google 查了一下,没查到,不知道是不是关键字不对
737 次点击
所在节点    问与答
10 条回复
dier
2023-02-15 11:03:18 +08:00
你先发一个不能重定向的信息让我们开开眼
tool2d
2023-02-15 11:11:18 +08:00
输出流就两个,一个是 stderr ,另一个是 stdout 。

你把这两个都屏蔽了,就没输出了。
mk3s
2023-02-15 11:20:38 +08:00
补一下目前没法屏蔽的信息
+ /usr/lib/rpm/check-buildroot
+ /usr/lib/rpm/redhat/brp-compress
+ /usr/lib/rpm/redhat/brp-strip /usr/bin/strip
+ /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump
+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/brp-python-bytecompile /usr/bin/python 1
+ /usr/lib/rpm/redhat/brp-python-hardlink
+ /usr/lib/rpm/redhat/brp-java-repack-jars

警告:软件包 ncurses-libs-5.9-13.20130511.el7.x86_64 已被加入,以 ncurses-libs-5.9-14.20130511.el7_4.x86_64 替换
警告:软件包 nettle-2.7.1-8.el7.x86_64 已被加入,以 nettle-2.7.1-9.el7_9.x86_64 替换
警告:软件包 readline-6.2-10.el7.x86_64 已被加入,以 readline-6.2-11.el7.x86_64 替换

97.06% done, estimate finish Wed Feb 15 11:18:14 2023
97.66% done, estimate finish Wed Feb 15 11:18:14 2023
98.27% done, estimate finish Wed Feb 15 11:18:14 2023
98.88% done, estimate finish Wed Feb 15 11:18:14 2023
99.48% done, estimate finish Wed Feb 15 11:18:14 2023
Total translation table size: 132122
Total rockridge attributes bytes: 58367
Total directory bytes: 98304
Path table size(bytes): 140
Done with: The File(s) Block(s) 824001
Writing: Ending Padblock Start Block 824116
Done with: Ending Padblock Block(s) 150
Max brk space used ab000
824266 extents written (1609 MB)

以上是我操作 rpmbuild ,rpm ,还有 mkisofs 产生的信息,目前没办法屏蔽
zhlxsh
2023-02-15 11:22:39 +08:00
终端里开一个程序,他能输出的信息除了 1 就是 2 没有第三种,这是他能输出的,如果有请发出来我也想开开眼界

但是,有些东西可以在终端输出信息,比如说现在咱俩都登陆在同一个机器上,我输入了 shutdown 命令,你那边也能看到提示。另外就是 wall 命令,,我猜他们是发给 tty 的吧,不知道能不能屏蔽 /忽略

除此之外还有某些告警可以打印到屏幕上,具体怎么配置,需要楼下内核组大神讲解一下
zhlxsh
2023-02-15 11:23:48 +08:00
@mk3s 3# 的输出,把你运行的命令贴一下
mk3s
2023-02-15 11:24:59 +08:00
@zhlxsh
@dier
已补充对应的信息
dier
2023-02-15 11:30:05 +08:00
#3 你这肯定是这个 build 过程中有调用其它命令,这是其他命令输出的信息,不是你执行的这个命令 /脚本输出的
dier
2023-02-15 11:30:44 +08:00
那个警告 替换明显是在更新软件
dier
2023-02-15 11:43:56 +08:00
简单来说,就是你执行命令时后面的重定向只对你当前执行的这个命令或者脚本的 1 2 信息进行重定向,如果执行的是一个脚本,且脚本里有调用其它命令,你这种写法是不能被重定向的,如果非要重定向,请用下面的方法来执行
```shell
{ sh file.sh; } >/dev/null 2>$1
```
dier
2023-02-15 11:44:38 +08:00
更正一下,上面的 & 打成了$

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/916246

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX