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]# 

上記と同じコマンドを実行する必要があります。に変更することはできず、-aux出力をauxリダイレクトすることもできません。STDERRだから警告を抑えることができるシステム設定を探しているのです。

答え1

Linuxコマンドは、さまざまなUnixスタイルの実装をpsエミュレートできます。デフォルトでは、「既存のBSDマーシャリングを使用したすべてのプロセスの一覧表示」を意味するようにps環境変数を設定します。シェルスクリプトから:PS_PERSONALITYbsd-aux

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はサブルーチンの一部です。このソリューションは、ユーザーが呼び出すシェル関数またはシェルスクリプトの場合に機能しますsource。コマンドを含むシェルスクリプトを実行しても機能しませんps

psSTDERRリダイレクトなど、いくつかの出力を変更してパス内のコマンドを置き換え、実際のコマンド自体を呼び出す名前でシェル関数を定義できます。

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

関連情報