为什么“service --status-all | grep mysql”得到许多不相关的结果?

为什么“service --status-all | grep mysql”得到许多不相关的结果?

运行时这里看起来很奇怪

service --status-all | grep mysql

为什么我得到这么多错误的结果?

它在 Centos 上运行良好,我得到了:

mysql is running xxxxxxx

这是我在 Ubuntu 上得到的结果:

在此处输入图片描述

答案1

service --status-all在 STDOUT(文件描述符 1)和 STDERR(文件描述符 2)上显示其输出,其中可以在 STDOUT 上确定状态的服务(由[+]或表示[-])和无法在 STDERR 上确定状态的服务(由 表示[?])。

在执行时service --status-all | grep mysql,您仅运行grep的 STDOUT service --status-all,这就是为什么 STDERR 上显示的所有内容都会显示出来(以及的可能输出grep)。

为了仅获得所需的结果,请将运行重定向将 STDOUT 和 STDERR 重定向到grep

service --status-all |& grep mysql

测试:

看看里面的标志[]

% service --status-all >/dev/null  ## Discarding STDOUT
 [ ? ]  apport
 [ ? ]  binfmt-support
 [ ? ]  console-setup
 [ ? ]  dns-clean
 [ ? ]  irqbalance
 [ ? ]  killprocs
 [ ? ]  kmod
 [ ? ]  lightdm
 [ ? ]  mysql


% service --status-all 2>/dev/null  ## Discarding STDERR
 [ + ]  acpid
 [ - ]  anacron
 [ - ]  apparmor
 [ + ]  atd
 [ + ]  atop
 [ + ]  avahi-daemon
 [ + ]  bluetooth
 [ - ]  brltty
 [ + ]  cron

相关内容