Solaris ps aux コマンドごとの出力。 grepに一致するものを見つけるために「ww」フラグが必要なのはなぜですか?

Solaris ps aux コマンドごとの出力。 grepに一致するものを見つけるために「ww」フラグが必要なのはなぜですか?

私はOracle Solaris 11.2 SPARCの使用を開始しました。

Linuxでは、次のように書くことができます。

ps aux | grep *some_data*

...しかし、Solarisでは結果は表示されません。

代わりに私は言わなければなりません

ps auxww | grep *some_data* 

man psの詳細情報を見つけました。ww

オプション文字が繰り返される場合(例:-ww)、このオプションはランダムに広い出力を使用します。

wwなぜ何かを得るために使用する必要がありますかgrep

答え1

LinuxでもSolarisでも、非標準BSDオプションを使用しています。

-o移植可能な方法は、hereのようにオプションを使用して表示するフィールドを指定することですps -o pid,args。最新の 11.3 アップデート以降を使用しない限り、引数のリストはルートであるか、プロセスを所有していない限り 80 文字に制限されます。

または、pgrep -fwhichを使用してコマンドライン全体を検索できます。

答え2

Linuxでは、このpsコマンドは出力が端末に移動するかどうかを検出します。端末の場合、出力は端末の幅に合わせて切り捨てられます。端末にないと切り捨てられません。実際にwwフラグを自動的に追加するのと同じように動作します。

ps aux次のように入力して違いを確認できます。ps aux | cat

あなたの例では、出力をにパイプするので、入力したように動作しgrepますps auxww | grep

移植性のためにww80文字を超えるすべてのデータを表示するには、常にこれらのフラグを使用する必要があります。

注:BSD形式のpsコマンドを使用しているので、Solarisでは正しいコマンドを呼び出していることを確認してください。

関連情報