Kann ich GNU ps unter OS X verwenden?

17

Wir können GNU coreutils über installierenbrew . Aber es gibt keine psin den Utensilien . Können wir Gnu psin OS X verwenden?

Ich möchte GNU verwenden, psda es mehr Optionen und Funktionen bietet.

Sanghyun Lee
quelle
Haben Sie versucht, unter OSX psoder ps -efin einem Terminal zu laufen ? Funktioniert unter OSX 10.7.5 ohne Änderungen auf zwei verschiedenen Computern. Es ist in / bin / ps
jammypeach
Ja, ich weiß, ich wollte GNU verwenden, psweil es mehr Optionen und Funktionen hat.
Sanghyun Lee
ach ja, tut mir leid, das habe ich aus der angegebenen Frage nicht mitbekommen. Ich würde vorschlagen, das irgendwo einzubeziehen, falls jemand das Gleiche meint wie ich - viel Glück beim Finden einer Lösung
jammypeach
Vielen Dank für den Vorschlag. Ich habe weitere Erklärungen hinzugefügt.
Sanghyun Lee

Antworten:

21

Es gibt kein tragbares ps-Programm. Der unter Linux verfügbare Befehl ps stammt, wie bereits erwähnt, aus dem Paket "procps". Der Grund, warum dies nicht auf OSX portiert werden kann, ist, dass Linux- und OSX-Kernel diese Informationen nicht auf die gleiche Weise verfügbar machen. Linux verwendet ein Pseudo-Dateisystem in / proc, während OSX die Funktion sysctl verwendet. Andere Systeme verwenden möglicherweise einen der beiden Mechanismen, stellen jedoch Daten in einem anderen Format bereit, oder erfordern möglicherweise Programme wie ps, um direkt aus dem Kernelspeicher zu lesen.

Im Allgemeinen gibt es keinen Standard dafür, wie Prozessinformationen für Programme wie ps und top verfügbar sind. Daher muss das Programm für ein bestimmtes Betriebssystem entwickelt werden. Wenn in den OSX-ps eine bestimmte Funktion fehlt, müssen Sie ein anderes Programm finden, das dies kann, oder Sie müssen eines selbst schreiben (siehe sysctl-Handbuch, insbesondere KERN_PROC als Ausgangspunkt) oder die vorhandenen ps ändern Befehl zum Hinzufügen der Funktion.

Wenn Sie durch Analysieren der Ausgabe des Befehls ps selbst das bekommen, was Sie benötigen, können Sie möglicherweise ein portierbares Programm schreiben. Die Ausgabe mit der -oOption ist für alle Plattformen einigermaßen zuverlässig, insbesondere wenn Sie sich auf den UNIX-Standard für beziehen zu verwendende Spaltennamen.

Random832
quelle
Ist das /procDateisystem die einzige Methode, mit der der Linux-Kernel eine Liste von Prozessen abruft, oder gibt es auch separate Systemaufrufe, die diese Informationen bereitstellen?
Tanner Swett
1
@TannerSwett Das glaube ich nicht. Bevor / proc implementiert wurde, arbeitete der Befehl ps unter Linux mit dem Lesen von / dev / kmem und / dev / swap.
Random832
9

Nein - da es nicht existiert. In den Unix- und Linux-Foren erfahren Sie , warum dasps GNU- coreutilsPaket keine eingebauten Komponenten enthält .

Die beste über Homebrew verfügbare alternative Formel ist psgrep:

psgrep ist ein kleines Bash-Shell-Skript, das die Prozessliste (wie von ps (1) erhalten ) mit dem großartigen Dienstprogramm grep (1) nach seiner Leistungsfähigkeit durchsucht .

Trotzdem können Sie sich immer noch psgrepso verhalten, wie es OS X tun pswürde. Beispielsweise:

   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.

pgrepist auch verfügbar über brew, was syntaktisch näher ist ps, aber weniger effizient als psgrep:

psgrep (1) ist nützlicher als pgrep (1), da es nicht nur die Prozessliste durchsuchen und eine PID zurückgeben kann, sondern auch nützlichere Informationen wie die UID, die GID, die Speicher- / CPU-Auslastung, die Genauigkeit und alles andere , was unterstützt wird , bereitstellen kann von ps.


Alle Schwerpunkte sind meine.

njboot
quelle
2
pgrepist auch Teil neuerer Versionen von OS X
nohillside
@patrix agh! guter Punkt, bestätigt:type -a pgrep pgrep is /usr/local/bin/pgrep pgrep is /usr/bin/pgrep
njboot
Nebenbei bemerkt, wie erwähnt hier , das proctoolsPaket entweder von MacPorts oder Homebrew bietet pgrepund pkilldas ist , was ich persönlich suchte , als ich hier auftauchen.
TheDudeAbides
3

psist laut Wikpedia kein Bestandteil von GNU coreutils . Die Version, die mit meiner Linux-Distribution geliefert wird, scheint von procps zu stammen , aber es scheint, als gäbe es keine Formel für Homebrew. Es gibt Formeln, für pstreedie Sie großartige Baumansichten erhalten, und es htopgibt auch einen weiteren guten Prozess-Viewer.

Thomas
quelle