You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

postlog命令终端有输出但无法通过管道传递数据的问题求助

问题

执行命令/usr/sbin/postlog hello时终端能正常输出内容,但将结果通过管道传递给cat -n添加行号时完全无效,就算把标准输出(stdout)和标准错误(stderr)都重定向也解决不了。相关命令执行记录如下:

root 18:03:27# /usr/sbin/postlog hello
postfix/postlog: hello

root 18:03:38# /usr/sbin/postlog hello | cat -n
postfix/postlog: hello

root 18:03:49# /usr/sbin/postlog hello |& cat -n

root 18:03:56# /usr/sbin/postlog hello 2>&1 | cat -n
原因分析

postlog是Postfix自带的日志工具,它默认不会把内容输出到标准输出或标准错误流,而是直接将日志发送给系统日志服务(比如syslog或者journald)。你在终端看到的输出,其实是终端从系统日志服务那边获取并显示的,并非postlog直接输出到终端的数据流。所以不管怎么重定向、用管道,cat -n都接不到任何数据,自然没法添加行号。

解决办法

要让postlog的输出能被管道处理,得用它的-p参数强制把内容输出到标准错误流,这样就能通过重定向或管道捕获内容了:

/usr/sbin/postlog -p hello 2>&1 | cat -n

或者用|&同时捕获标准输出和标准错误:

/usr/sbin/postlog -p hello |& cat -n

执行后就能看到带行号的输出了。

内容的提问来源于stack exchange,提问作者kingkong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 04:52:03