centos 中的 fuser 命令在 bash 脚本中打印不需要的输出

fuser command in centos print an unwanted output in bash script

我正在使用 centOS 7,我正在尝试通过 bash 脚本检查使用端口 X/tcp 和 "fuser" 命令的进程的 pid,像这样:

  some_pid=$(fuser X/tcp) > /dev/null
  another_pid=$(fuser Y/tcp) > /dev/null
  ...
  if [[ -z "$some_pid" ]]; then ...

虽然我不想在控制台打印任何东西,但结果是:

X/tcp:
Y/tcp:
...

当我尝试使用 -s 运行 fuser 时,if 语句 returns 为 false,因为出于某种原因 fuser 的结果为空。

如何避免不必要的打印? 为什么当我 运行 在静默模式下热凝时它 returns 是空的?

fuser手册页中你可以看到

fuser outputs only the PIDs to stdout, everything else is sent to stderr.

那是你需要去掉 stderr 输出。

some_pid=$( fuser X/tcp 2> /dev/null )