コマンドを実行すると、次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_PERSONALITY
bsd
-aux
PS_PERSONALITY=bsd /command/you/cannot/modify
Cで:
setenv("PS_PERSONALITY", "bsd", 1);
function_you_cannot_modify();
unsetenv("PS_PERSONALITY");
答え2
醜い答えは次のとおりです。ps
引数のように見える引数を取り、それを削除(少なくとも置換として-aux
)aux
してから、/bin/ps
削除された引数で呼び出すスクリプトを作成します。電話してps
個人bin
ディレクトリに入れてください。
答え3
ユーザーが作成するコマンドps
はサブルーチンの一部です。このソリューションは、ユーザーが呼び出すシェル関数またはシェルスクリプトの場合に機能しますsource
。コマンドを含むシェルスクリプトを実行しても機能しませんps
。
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