Wir können GNU coreutils über installierenbrew
. Aber es gibt keine ps
in den Utensilien . Können wir Gnu ps
in OS X verwenden?
Ich möchte GNU verwenden, ps
da es mehr Optionen und Funktionen bietet.
ps
weil es mehr Optionen und Funktionen hat.
Wir können GNU coreutils über installierenbrew
. Aber es gibt keine ps
in den Utensilien . Können wir Gnu ps
in OS X verwenden?
Ich möchte GNU verwenden, ps
da es mehr Optionen und Funktionen bietet.
ps
weil es mehr Optionen und Funktionen hat.
Antworten:
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 -o
Option ist für alle Plattformen einigermaßen zuverlässig, insbesondere wenn Sie sich auf den UNIX-Standard für beziehen zu verwendende Spaltennamen.
/proc
Dateisystem die einzige Methode, mit der der Linux-Kernel eine Liste von Prozessen abruft, oder gibt es auch separate Systemaufrufe, die diese Informationen bereitstellen?
Nein - da es nicht existiert. In den Unix- und Linux-Foren erfahren Sie , warum dasps
GNU- coreutils
Paket 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 psgrep
so verhalten, wie es OS X tun ps
wü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.
pgrep
ist 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.
pgrep
ist auch Teil neuerer Versionen von OS X
type -a pgrep
pgrep is /usr/local/bin/pgrep
pgrep is /usr/bin/pgrep
proctools
Paket entweder von MacPorts oder Homebrew bietet pgrep
und pkill
das ist , was ich persönlich suchte , als ich hier auftauchen.
ps
ist 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 pstree
die Sie großartige Baumansichten erhalten, und es htop
gibt auch einen weiteren guten Prozess-Viewer.
ps
oderps -ef
in einem Terminal zu laufen ? Funktioniert unter OSX 10.7.5 ohne Änderungen auf zwei verschiedenen Computern. Es ist in / bin / ps