web-dev-qa-db-ja.com

Solaris psauxコマンド固有の出力。 grepとの一致を見つけるために `ww`フラグが必要なのはなぜですか?

Oracle Solaris 11.2SPARCを使い始めました。

Linuxでは、私は書くことができます

ps aux | grep *some_data*

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

代わりに私は言う必要があります

ps auxww | grep *some_data* 

wwについての詳細を見つけるために、man psを調べました。

オプション文字が繰り返される場合、つまり-wwの場合、このオプションは任意の幅の出力を使用します

wwに何かを取得するためにgrepを使用する必要があるのはなぜですか?

2
P.Grjozs

Linuxでは、psコマンドは出力が端末宛てであるかどうかを検出します。ターミナルへの場合は、出力をターミナル幅に切り捨てます。ターミナル上にない場合は切り捨てられません。事実上、wwフラグを自動的に追加するかのように動作します。

ps auxps aux | catを入力すると違いがわかります

この例では、出力をgrepにパイプしているため、ps auxww | grepと入力したかのように機能します。

移植性のために、(たとえば)80文字を超えるすべてのデータを表示する場合は、常にwwフラグを使用する必要があります。

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

2
Stephen Harris

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

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

または、コマンドライン全体を検索するpgrep -fを使用することもできます。

3
jlliagre