Welche zu wählen - BSD- oder Unix-Befehle, wo verfügbar?


14

Befehle wie pskommen mit vielen Parametern, vor allem, weil sie die Möglichkeit bieten, zwischen Unix- und BSD-Style-Flags zu wählen. Ich hoffe du verstehst meinen Standpunkt hier.

Also, wenn es eine solche Option gibt, welche sollte ich für maximale Kompatibilität auf allen Linux-Systemen wählen? (max. Kompatibilität ist zum Beispiel eine der Prioritäten)

Ich weiß, dass der Unix-Stil ziemlich offensichtlich ist, aber BSD-Befehle enthalten aus irgendeinem Grund besser lesbare Informationen (Spaltentitel zum Beispiel, CPU-Spalte usw.). Natürlich, bitte korrigieren Sie mich, wenn ich falsch liege, aber das habe ich gespürt.

Antworten:


17

So ziemlich alle Linux-Versionen verwenden GNU-Versionen der ursprünglichen Unix-Kernbefehle ps, die, wie Sie bereits bemerkt haben, sowohl BSD- als auch AT & T-Optionen unterstützen.

Da Ihr erklärtes Ziel nur die Kompatibilität zwischen Linuxen ist, heißt die Antwort: "Es spielt keine Rolle."

Eingebettete und andere sehr kleine Linux-Varianten verwenden in der Regel BusyBox anstelle der GNU-Tools, haben jedoch pskeinen Einfluss auf die Antwort, da die BusyBox-Version so reduziert ist, dass sie weder als AT & Tish noch als BSDish bezeichnet werden kann.

Im Laufe der Zeit haben andere Unixy-Systeme die psKompatibilitätsunterschiede verringert . Mac OS X - das indirekt von BSD Unix abgeleitet ist und sich im Allgemeinen noch immer am ähnlichsten wie BSD Unix verhält - akzeptiert sowohl AT & Tish- als auch BSDish- psFlags.

Solaris / OpenIndiana verhält sich auch so, obwohl dies weniger überraschend ist, da es eine gemischte BSD- und AT & T-Geschichte hat.

FreeBSD, OpenBSD und NetBSD verwenden immer noch ausschließlich den BSD-Stil.

Je älter eine Unix-Box ist, desto wahrscheinlicher ist es, dass sie nur einen Flaggenstil akzeptiert. Sie können die Unterschiede auf einer solchen Box auf die gleiche Weise wie jetzt dokumentieren: Installieren Sie die GNU-Tools, sofern diese noch nicht installiert wurden.

Trotzdem gibt es immer noch Fallen. psDie Ausgabe sollte im Allgemeinen nicht in Skripten analysiert werden, die portierbar sein müssen, z. B. weil Unixy-Systeme in Bezug auf die verfügbaren Spalten, die Datenmenge, die das Betriebssystem für Nicht-Root-Benutzer sichtbar machen möchte, usw. variieren.

(Übrigens, es ist "BSD vs. AT & T", nicht "BSD vs. Unix". BSD Unix ist immer noch UNIX®. BSD Unix teilt eine direkte Entwicklungshistorie mit der ursprünglichen AT & T-Niederlassung. Diese Weitergabe funktioniert auch in beide Richtungen : AT & T und seine Nachfolger brachten BSD-Innovationen an mehreren Stellen in ihrer Geschichte nach Hause. Diese Vereinheitlichung im Laufe der Zeit ist teilweise auf die Bemühungen von The Open Group und seinen Vorgängern zurückzuführen.)


Auch wenn dies eine großartige Erklärung (und Antwort) ist, hilft es nicht bei der Frage: Welchen Stil soll ich lernen?
Jarl

@Jarl: Lerne zuerst POSIX. Das gibt es überall. Erfahren Sie dann, welche seltsamen Varianten auf den von Ihnen am häufigsten verwendeten Systemen verwendet werden. Ignoriere den Rest.
Warren Young

Welcher psArgumentstil (BSD oder Unix) ist dann POSIX?
Jarl

@ Jarl: Siehe die Spezifikation . Im Allgemeinen lehnt sich POSIX eher an SysVish als an BSD an, da POSIX wirtschaftlich betrieben wurde und alle wichtigen kommerziellen Unixe der damaligen Zeit System V-Derivate waren.
Warren Young

0

Verwenden Sie im Zweifelsfall die SysV-Syntax. Dies wurde von vielen Menschen vereinbart und ist de facto der Standard. Das BSD-Zeug stammt entweder aus der Vorgeschichte oder ist Teil eines unterschiedlichen Zweigs (SysV war ein Versuch, die Unix-Kriege zu beenden, indem alle unterschiedlichen Linien unter einem Dach vereint wurden).


De-facto-Standard für Linux, nicht Solaris, * BSD, OSX usw.
chiggsy

Sicher, es ist der Standard für Solaris (das war das erste SysV, das herauskam, denken Sie daran). Zumindest AIX und HP-UX von IBM haben sich daran gehalten. Die BSDs sind ein Überbleibsel aus einer vergangenen Ära.
Vonbrand

Sie haben Recht damit, dass Solaris SysV ist, mein Fehler.
Chiggsy

3
Upvoted, obwohl ich die abfälligen Verweise auf BSD in Frage stelle. Es ist keine schlechte Sache, die Dinge richtig zu machen.
Chiggsy

1
-1: Erstens, ich denke du meinst de jure Standard. Um SysV-Style-Optionen als De-facto- Standard zu betrachten, müssen Sie einige Existenzfaktoren ignorieren: FreeBSD, OpenBSD und NetBSD. Sie können sie nicht mit diesem "Vorgeschichts" -Argument von der Hand winken lassen. Zweitens war Solaris nicht das erste System V. Es war möglicherweise die erste kommerzielle Auslieferung von SVR4 , aber SVR1 wurde für Vaxen und den PDP-11 entwickelt .
Warren Young
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.