Linux-ähnliches top / netstat / etc. unter Mac OS X?

24

Die Verwendung von Unix-Dienstprogrammen unter Mac OS X ist sehr schmerzhaft. port install coreutils +with_default_namesund ein paar andere solche Ersetzungen beheben die meisten von ihnen, aber es bleiben einige in defekten Mac OS X-Standardeinstellungen - am ärgerlichsten topund netstat, aber ich bin sicher, ich könnte mir ein paar mehr vorstellen.

Ich vermute, dass Befehle wie topund netstatziemlich betriebssystemspezifisch sind, also funktioniert es nicht, nur die Quellen ihrer Linux-Entsprechungen zu greifen und neu zu kompilieren.

Was ist das beste Äquivalent zu diesen und anderen Befehlen, die unter Mac OS X funktionieren?

taw
quelle
3
Sie als "Ersatz" zu bezeichnen, ist möglicherweise historisch nicht korrekt. Sie sind von den BSD-Varianten abgeleitet, und in der Vergangenheit waren viele davon älter als die von Ihnen gewohnten Linux-Tools. Es gibt jedoch gute Fragen und ähnliche Probleme für diejenigen von uns, die fink anstelle von ports verwenden.
DMCKEE
3
Ihre Frage wäre besser, wenn sie weniger redaktionell wäre. Der Wechsel von einem Unix-ähnlichen Betriebssystem zu einem anderen bringt immer wieder Überraschungen in der Art und Weise, wie verschiedene gemeinsame Unix-Befehle auf verschiedenen Plattformen unterschiedliche Entwicklungspfade eingeschlagen haben. Ich habe Solaris, DEC Ultrix, AT & amp; T SysV, HP-UX, GNU / Linux (viele Distributionen), NEXTSTEP, OpenStep, BSDI, Xenix / SCO, FreeBSD, NetBSD, Mac OS X und CygWin verwendet. Wenn Sie sich zu sehr an die einzigartigen Eigenschaften der Werkzeuge einer Geschmacksrichtung gewöhnen, ist es schmerzhaft, wenn Sie zu einem anderen Gefallen wechseln. Das macht sie nicht "kaputt".
Spiff
2
Richtig, und vergiss Hurd nicht. Abgesehen von Linux und OSX ist der Rest Ihrer Liste nur von historischem Interesse.
Taw
@taw: Solaris wird an vielen Stellen noch verwendet, insbesondere für zfs.
Dan

Antworten:

24

Viele netstat-Funktionen können durch einen lsof- Befehl ersetzt werden. Ich habe oft benutzt

netstat -lnp | grep 1234

um herauszufinden, wer Port 1234 abgehört hat. Mit lsof (das auf beiden Systemen verfügbar ist) kann ich Folgendes tun:

lsof -i :1234

Der oberste Befehl unter OSX ist auch nicht schlecht, er ist nur anders. Und ich bin mir ziemlich sicher, dass einige der Messdaten nur auf dem Mac sinnvoll sind.

Beachten Sie, lsof -Pi :1234dass dies etwas schneller sein sollte, wenn Sie nicht versuchen, die Dienstnamen (der Ports) aufzulösen.

Eric Darchis
quelle
6
OSX lsofist besser netstatals OSX netstat, danke.
Taw
fügen Sie hinzu -P, um die Namensauflösung zu verhindern und sie zu beschleunigen. Also Linux netstat -ntlpirgendwie mögen lsof -Pi | grep -i listen. Ich weiß immer noch nicht, wie mehrere PIDs denselben Port überwachen können, was ich unter Linux nicht sehe: /
Ray Foss
@RayFoss Unter Mac und anderen Betriebssystemen kann ein Prozess abhören . : 1234 und eine weitere am 127.0.0.1:1234. Letzteres hat Vorrang. Das ist unter Linux verboten.
Eric Darchis
4

Oh cool, htopist in Homebrew! Ich denke, es ist kein Klon von Linux, topaber wenn Sie sich für htopLinux entscheiden, dann ist htopOS X sicher nicht zu weit entfernt.

Crazysim
quelle
1
Es ist kein direkter Ersatz, da Sie keine schnelle Liste der Listening-Server erhalten können
Ray Foss