在 Linux 上禁止来自 ps -aux 的警告

在 Linux 上禁止来自 ps -aux 的警告

当我运行该ps命令时,我收到一条警告说Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ

我该如何抑制这个警告?为此我必须做一些系统设置吗?我触发的命令是:

[root@localhost home]# ps -aux | grep "curl -s -o Test" 
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ
root      4856  0.0  0.0   4044   672 pts/0    S+   07:20   0:00 grep curl -s -o Test
[root@localhost home]# 

请注意,我必须触发与上面完全相同的命令(我无法将 更改为-auxaux我无法重定向STDERR输出)。这就是为什么我正在寻找一些可以抑制警告的系统设置。

答案1

Linux 的ps命令可以模拟ps各种 Unix 风格的实现。将环境变量设置PS_PERSONALITY为 ,bsd使其默认接受-aux“使用传统 BSD 列集列出所有进程”的含义。从 shell 脚本:

PS_PERSONALITY=bsd /command/you/cannot/modify

从C:

setenv("PS_PERSONALITY", "bsd", 1);
function_you_cannot_modify();
unsetenv("PS_PERSONALITY");

答案2

丑陋的答案是:编写一个脚本,该脚本接受看起来像ps参数的参数,对它们进行清理(至少用 替换-auxaux,然后/bin/ps使用清理后的参数进行调用。调用它ps并将其放入您的私人bin目录中。

答案3

您编写的ps命令是子例程的一部分 - 如果它是您调用的 shell 函数或 shell 脚本,则此解决方案有效source;如果执行包含该命令的 shell 脚本,则不起作用ps

您可以使用名称定义一个 shell 函数ps,该函数替换路径中的命令,并调用实际命令本身,并对输出进行一些修改,例如重定向 STDERR:

function ps() {
    command ps "$@" 2>/dev/null
}

使用的示例ls

$ ls -d /etc /missing
ls: cannot access /missing: No such file or directory
/etc
$ function ls() {          
    command ls "$@" 2>/dev/null
}
$ ls -d /etc /missing
/etc

相关内容