当我在Ubuntu20.04安装了xrdp后想要抓取xrdp的版本号信息,我通过 xrdp -v 打印出了xrdp的版本信息如下:
于是我想通过 sed 命令将第一行的版本信息抓取出来:
xrdp -v | sed -n '1p'
运行完这条命令之后,终端却没有给我任何输出,然而之前我在 CentOS7.9 却能成功抓取,于是我又尝试将整个输出信息重定向到一个文件中,当我查看文件时也没有任何输出:
最后通过查阅资料,我找到了解决办法,在 xrdp 前面加个 unbuffer 或者 stdbuf -o0(小写的欧和零):
这两个命令的作用都是为了取消缓冲,这就好比我们在线看电影时,转圈圈提示正在缓冲,等它缓冲完一段时间的视频之后你整段才能播放出来,用了这命令之后,当前你能看多少就给你播放多少。所以我们抓取不到的原因是 xrdp -v 打印的内容在没有填满的缓冲区内暂时无法输出,我们就去抓取,自然是什么都抓取不到。