行を切り捨てずにSolarisでプロセスリスト全体を生成する方法はありますか?ps
次のパラメータを使用してコマンドを試しました。
-f は完全なリストを生成します。 (下記参照 リスト全体の各列の重要性 - イギリス。 )
-l は長いリストを生成します。 (下記参照)
したがって、これらの両方が私が望むことをしているように見えますが、psのマニュアルページでさらに詳しく見ると、次のようなものがあります。
args コマンドとすべての引数は次のように与えられます。 ひも。実装が切り捨てられる可能性がある この値はフィールド幅に対応します。 実装するかどうかによって異なります。 追加の切り捨てが発生します。これは 文字列かどうかは指定されていません パラメーターのバージョンを示します。 コマンドに渡されるときのリスト 起動時またはバージョン パラメーターが変更された可能性があります。 アプリを介して。アプリケーションはできません 変更が可能かどうかによって異なります。 パラメータリストを変更して 化はpsの出力に反映されます。 Solaris 実装の制限 文字列は80バイトです。 パラメータリストのバージョンはそのままです。 起動時にコマンドに渡されます。
これは、基本的に出力が切り捨てられ、これに対して私ができることがないことを意味します。だから私はここにいます。もちろん、他の人もこの問題に遭遇し、解決策があるかもしれません。 psではこれを行うことができないため、これを行うには別のツールを使用する必要があります。正しいですか?
答え1
あなたは試すことができます
pargs <PID>
これにより、すべてのパラメータのリストが表示されます。
または別のpsを使用してください。 root(または十分な権限を持つユーザー)で実行する場合
/usr/ucb/ps auxww
すべての主張をあなたに与えるでしょう。 SUNWscpu、「ソース互換性(Usr)」の一部です。
答え2
カーネルはコマンドライン引数を追跡する必要はありません。プログラムが呼び出しで始まると、カーネルはパラメータをプロセスメモリにコピーする必要があります(execve
Cプログラムと同様に使用できるように)。argv
その後、カーネルは初期コマンドライン引数を格納するために使用されたメモリを削除できます。プロセスがパラメータコピーを上書きできるようにします。だから議論の余地が全くないかもしれない。
一部のUNIXバリアントは、任意の形式でパラメータコピーを保持します。 Solaris /proc/$pid
。 OpenSolaris 2009.06以降、パラメータの唯一のトレースはです。パラメータはスペースで連結され(したがって、と/proc/$pid/psinfo
区切ることはできません)、結果の文字列は80バイトに切り捨てられます。このフィールドは列に印刷される内容です。foo "one" "two"
foo "one two"
/proc/$pid/psinfo
ps
args
ちなみに、オプションはフィールドが特定の幅に切り捨てられるかどうかではなく、印刷されるフィールドを制御します-f
。-l
答え3
ps -e
実行中のすべてのプロセスのリストを提供します。このps -elf
。
答え4
ps
使用するコマンドに応じて、以下を使用します。
ps -auxw