Solarisでps-feの出力を拡張して、80文字を超える文字を表示するにはどうすればよいですか。プロセスにいくつかの引数があり、プロセス名を表示できなくなりました。
6 に答える
SVR4の通常のpsであるデフォルトのps(/ usr / bin / ps)では表示できません。
完全な引数行を取得するには、BSD ps(UCB =カリフォルニア大学バークレー校)を使用します。
/usr/ucb/ps -alxwww
Solarisでこれをようやく修正しました。Solaris 11.3 SRU 5以降、すべての元の引数ベクトルと環境変数を/procから取得できます。psはすべてのコマンドラインを出力します。
簡単な答えは、他のユーザーが所有するプロセスについて、Solaris上のプロセスに対する完全な引数を確実に取得する方法はないということです。ルートまたはその他の特権アクセスがある場合は、古いバージョンでは/ usr / ucb / psを使用でき、新しいバージョンでは「pargs」または同様のツールを使用できます(すべてのバージョンで機能するツールはありません)。
基本的に、Solarisはプロセスの開始時に元の引数を格納しますが、他のほとんどのプラットフォームでは、psが何らかの方法でプロセスの実行時にargvのコンテンツにアクセスできます。この保存されたコピーは、制限された(80バイト)サイズの特別なカーネルデータ構造になっています。これはまた、プログラムが、有用または悪意のある手段のためにpsによって表示されるように、開始後にargsを変更することができないことを意味します。
したがって、pidチェックなどのポータブルな目的でコマンドラインにアクセスする必要がある場合は、絶対パスなしでプログラム制御のexecpパスを起動するなどのハックを介して短いコマンドラインを適用するか、そのポータブルを放棄するかを選択する必要があります。 Solarisの機能。
あなたはpargsPIDを使うことができますそれはあなたにpsより多くの情報を与えるでしょう
psで使用できるオプションは2セットあります。他の人は正しい名前でチャイムを鳴らします((おそらくBSDとSRVn)?)
non-options-preceded-with-a-hyphen-versionを使用すると、次のことができます。
ps auxww(w?) | grep ${PID}
印刷されるコマンド詳細の長さを延長します(ここでも、先頭の「-」オプション標識がないことに注意してください)。
場合によっては、実際のコマンドの前に多くの環境変数の割り当てが表示されることに注意してください。つまり、myPath = ... cfgFile = ... / path / to / command ...args..。
一部のシステムでは、コマンドの長さに関係なく、「www」ですべてが出力されると思います。
最後に、psを使用して多くのクレイジーなことを行った経験では、ときどきPIDがあり、出力には最初の6つが表示されますか?列ですが、コマンド用に予約されているスペースが空であるか、ある種のプレースホルダー値がありました。comp.unix.shellを検索することで、最終的にそれが真実である理由を突き止めましたが、それはかなり前のことであり、現在Solarisシステムにアクセスできません。
これがお役に立てば幸いです。
試してみてくださいps -efl
。それが機能しない場合(Solarisボックスが手元にない場合)、試すこともできますps -efl | cat
(一部のプログラムは、端末に出力しているかどうかをチェックして、出力幅を決定します)。