OS XでGNU psを使用できますか?


18

GNU coreutilsはを介してインストールできbrewます。しかし、utilsにはありませんpspsOS Xでgnuを使用できますか?

GNU psにはより多くのオプションと機能があるため、GNUを使用したいと思います。


OSXの端末psまたはps -ef端末で実行しようとしましたか?OSX 10.7.5で2つの異なるマシンで修正なしで動作します。これは、中/ binに/ psのだ
jammypeach

うん、私は知っている、psより多くのオプションと機能を持っているのでGNUを使いたかった。
サンギョンリー

ああ、ごめんなさい、私はその質問からそれを理解していませんでした。解決策を見つけると幸運-私はどこか、他の包み誰も私と同じように考えていることなど、お勧めしたい
jammypeach

ご提案ありがとうございます。それについての説明を追加しました。
李サンヒョン

回答:


22

移植可能なpsプログラムはありません。Linuxで利用可能なpsコマンドは、他の人が述べたように、「procps」パッケージからです。これをOSXに移植できない理由は、LinuxとOSXカーネルが同じ方法でこの情報を公開しないためです。Linuxは/ procで擬似ファイルシステムを使用しますが、OSXはsysctl関数を使用します。他のシステムはどちらかのメカニズムを使用しますが、データを異なる形式で提供するか、psのようなプログラムがカーネルのメモリから直接読み取る必要があります。

一般に、psやtopなどのプログラムがプロセス情報を利用する方法についての標準はありません。そのため、プログラムは特定のオペレーティングシステム用に設計する必要があります。OSX psに特定の機能がない場合は、それを実行できる別のプログラムを見つけるか、自分で作成するか(sysctlマニュアル、特にKERN_PROCを開始点として参照)、または既存のpsを変更する必要があります機能を追加するコマンド

あるいは、psコマンド自体の出力を解析することで必要なものを取得できる場合、移植性のあるプログラムを作成できる場合があります- -oオプションを使用した出力は、特にUNIX標準参照する場合、プラットフォーム間でかなり信頼できます使用する列名。


/procLinuxカーネルがプロセスのリストを取得するために提供する唯一の方法はファイルシステムですか、またはその情報を提供する個別のシステムコールもありますか?
タナースウェット

1
@TannerSwettそうは思いません。/ procが実装される前は、Linuxのpsコマンドは/ dev / kmemおよび/ dev / swapから読み取ることで機能していました。
Random832

9

いいえ-存在しないため。なぜ何の組み込みがないpsGNUの中にcoreutilsパッケージ、参照のUnixとLinuxフォーラム上でこの答えを。

Homebrewを介して利用可能な最適な代替式はpsgrep次のとおりです。

psgrepは、強力なユーティリティgrep(1) を使用して(ps(1)で取得した)プロセスリストを検索する小さなBashシェルスクリプトです。

そうは言っても、psgrepOS Xのように動作するために使用できますps。例えば:

   OPTIONS
   -a     Search the process list using BSD's "ps aux" format. This option
          includes all users' processes in the search.

   -b     Search the process list using BSD's "ps  ux"  format  (default).
          This option only includes the running user's processes.

pgrepbrew、を介しても利用できます。これは、構文的にはに近いですがps、以下よりも効率的ではありませんpsgrep

psgrep(1)pgrep(1)よりも便利です。プロセスリストを検索してPIDを返すだけでなく、UID、GID、メモリ/ CPU使用率、ナイスネス、その他サポートされているものなど、より有用な情報を提供できるからです。 PSによって。


すべてが私のものです。


2
pgrep同様にOS Xの最近のバージョンの一部である
nohillside

@patrix agh!良い点、確認:type -a pgrep pgrep is /usr/local/bin/pgrep pgrep is /usr/bin/pgrep
njboot

余談同じように、上述したようここではproctoolsMacPortsのか、自作のいずれかからパッケージが提供pgrepしてpkillいるが、私はここに現れたとき、私は個人的に探していたものです。
-TheDudeAbides

3

psWikpediaによると、GNU coreutilsの一部ではありません。私のLinuxディストリビューションに付属しているバージョンはprocpsからのもののようですが、homebrewには公式がないようです。pstree優れたツリービューを提供できる数式があり、またhtop別の優れたプロセスビューアーです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.