Oracle Solaris 11.2SPARCを使い始めました。
Linuxでは、私は書くことができます
ps aux | grep *some_data*
...しかし、Solarisでは結果が表示されません。
代わりに私は言う必要があります
ps auxww | grep *some_data*
ww
についての詳細を見つけるために、man ps
を調べました。
オプション文字が繰り返される場合、つまり-wwの場合、このオプションは任意の幅の出力を使用します
ww
に何かを取得するためにgrep
を使用する必要があるのはなぜですか?
Linuxでは、ps
コマンドは出力が端末宛てであるかどうかを検出します。ターミナルへの場合は、出力をターミナル幅に切り捨てます。ターミナル上にない場合は切り捨てられません。事実上、ww
フラグを自動的に追加するかのように動作します。
ps aux
とps aux | cat
を入力すると違いがわかります
この例では、出力をgrep
にパイプしているため、ps auxww | grep
と入力したかのように機能します。
移植性のために、(たとえば)80文字を超えるすべてのデータを表示する場合は、常にww
フラグを使用する必要があります。
注:BSD形式のps
コマンドを使用しているため、Solarisでは正しいコマンドを呼び出していることを確認してください。
LinuxでもSolarisでも、非標準のBSDオプションを使用しています。
移植可能な方法は、-o
オプションを使用して、表示するフィールドを指定することです。たとえば、ここではps -o pid,args
です。最近の11.3アップデート以降を使用していない限り、rootであるかプロセスを所有していない限り、引数リストは80文字に制限されることに注意してください。
または、コマンドライン全体を検索するpgrep -f
を使用することもできます。