J'ai vu de nombreuses commandes qui acceptent une "syntaxe BSD" ainsi que leur syntaxe standard. Prenez la ps
commande pour un exemple:
To see every process on the system using standard syntax:
ps -e
ps -ef
ps -eF
ps -ely
To see every process on the system using BSD syntax:
ps ax
ps axu
Quelle est donc la différence entre ces deux itinéraires? En général, quand ils disent dans la syntaxe BSD quels éléments dois-je retenir? Cette syntaxe concerne-t-elle uniquement les commandes qui se trouvent également dans le BSD?
command-line
syntax
Mohammad Reza Rezwani
la source
la source
ps
optargs, c'est se tenir au bord d'un abîme que l'homme n'était pas censé savoir.Réponses:
Quelle est la différence entre MS Office et LibreOffice? Entre Firefox et Chrome?
Ils font à peu près la même chose, mais par des personnes différentes avec des objectifs légèrement différents.
Peut-être que la meilleure question est de savoir pourquoi les distributions BSD, Linux, OSX et Unix partagent autant de commandes? Cela se résume à la conformité POSIX . POSIX est essentiellement un ensemble de normes pour les systèmes d'exploitation de type Unix; il précise l'API de base, les commandes et comment ces commandes doivent fonctionner.
Dans le cas
ps
(d'une commande stipulée par POSIX), certains arguments sont requis. Il s'agit notamment de ceux BSD. Toutes les commandes dérivées de POSIX ont leurs propres pages de manuel mais elles nécessitent une installation distincte. Pourps
:Alors pourquoi BSD n'utilise-t-il pas notre
ps
(ou vice versa)?ps
forfait (procps
voir:dpkg -S $(which ps)
) est une fourchette d' un autreprocps
paquet . Ces deux sont sous licence GPL. Ceci est incompatible avec la licence BSD et ne peut donc pas y être inclus. ( Nous pourrions inclure des BSD mais pas besoin).ps
est assez spécifique au noyau. Je pense qu'ils sont techniquement incompatibles.Et les autres applications?
La plupart des commandes pour la conformité POSIX proviennent du
coreutils
package d'Ubuntu . Ce paquet représente le GNU dans GNU / Linux et il est également sous licence GPL. BSD propose ses propres versions sous licence compatibles BSD qui adhèrent à POSIX mais ne sont pas nécessairement complètement identiques à leurs homologues GNU.ps
n'est pas la seule commande POSIX qui n'est pas GNU . Il y en a des tas.Alors que je dirige, pourquoi devraient-ils l'être? Ils sont créés par différentes personnes sur une très, très longue période. Voilà la réponse courte ici.
la source
Cela remonte à l'histoire quelque peu tortueuse d' Unix (Wikipedia a un schéma simplifié , qui est loin d'être complet). En particulier, pendant un certain temps, il y avait deux courants majeurs: le système V développé par AT&T, et BSD développé à l'Université de Californie, Berkeley. C'était vers le début des années 1980, bien avant Linux (1991), sans parler d'Ubuntu (2004). Souvent, ces deux courants ont pris des décisions différentes, et même aujourd'hui, vous trouverez la référence occasionnelle aux variantes ou fonctionnalités du «Système V» et du «BSD».
La
ps
commande remonte à l'une des premières versions d'Unix (elle n'était pas dans la version 1, la première page de manuel que je peux trouver en ligne est de la version 5 (p.94) en 1974). À l'époque, ilps
n'y avait que quelques options, par exempleps a
, afficherait tous les processus au lieu de seulement celui de l'utilisateur etps x
afficherait les processus sans terminal connecté. Vous remarquerez que les options ne commencent pas par-
: à l'époque, la convention d'utilisation-
des options n'était pas presque systématique comme c'est le cas aujourd'hui, c'était surtout une chose pour les commandes qui prenaient les noms de fichiers comme arguments normaux.Au fil du temps, les différents volets d'Unix se sont étendus
ps
avec de nombreuses autres options. La variante de BSD a choisi de conserver la syntaxe originale, sans leader-
, eta
etx
existent encore aujourd'hui. La variante System V a choisi d'adopter la convention syntaxique des-
options for et a utilisé différentes lettres (par exempleps -e
pour afficher tous les processus). Oracle (anciennement Sun) Solaris est un exemple de variante System V (Solaris fournit également unps
exécutable distinct , dans un répertoire qui n'est pas par défautPATH
, pour les applications écrites avec BSD en tête).Au moment où Linux est entré en scène, les personnes qui l'utilisaient avaient souvent une expérience préalable d'une variante d'Unix ou d'une autre. Linux a parfois fait les choses à la manière du System V, parfois à la manière de BSD, parfois à sa manière, soit en fonction de considérations techniques, soit en fonction de l'expérience et des goûts de quiconque avait implémenté la fonctionnalité. La
ps
commande de Linux a commencé avec des options de type BSD, par exempleps ae
pour afficher tous les processus et inclure des variables d'environnement dans la liste. Au fil du temps (à la fin des années 1990, je ne me souviens pas exactement quand), les auteurs desps
options supplémentaires de Linux pour les personnes habituées au système V. Donc, aujourd'huips ax
oups -e
listera tous les processus sous Linux, et il y a même une variable d'environnement (PS_PERSONALITY
) pour faireps
se comporter davantage comme diverses anciennes variantes Unix d'Unix, pour le bien des anciens scripts et des personnes ayant des habitudes définies.Les gens qui utilisaient plusieurs variantes Unix n'aimaient pas devoir modifier leurs programmes et leurs habitudes lors du passage d'une variante Unix à une autre. Il y a donc eu un effort pour normaliser un sous-ensemble de fonctionnalités. Cela a conduit au standard POSIX (dirigé par l' IEEE ), que Ubuntu suit dans l'ensemble. La première édition dont la portée incluait la
ps
commande est sortie en 1992; celui-ci n'est pas disponible en ligne, mais l' édition 1997 l' est. Pour laps
commande, comme dans de nombreux autres cas, POSIX a adopté la façon de procéder System V.La
ps
syntaxe standard de la commande est compatible avec System V et POSIX. De plus, cette syntaxe peut être considérée comme standard car elle utilise-
pour introduire des options par défaut. Certaines options n'existent que dans l'une des deux syntaxes; heureusement, ils peuvent être mélangés dans le même appel.D'une manière générale, «BSD» vs «System V» n'a aucune implication technique. Il fait référence à l'histoire: «BSD» est le choix que BSD a fait dans les années 80 et à peu près, «System V» est le choix qu'AT & T et ses partenaires (en particulier Sun) ont fait. «POSIX» est tout choix fait par le comité de normalisation IEEE.
la source
La syntaxe `` standard '' à laquelle vous faites référence est en fait le système d'exploitation GNU qui a été développé dans les années 1980. Les utilitaires et la philosophie basés sur GNU ont été combinés avec le noyau Linux afin de développer la plupart des distributions Linux modernes (y compris Ubuntu).
Le système d'exploitation BSD a été développé à la fin des années 1970, indépendant de GNU, et plus tard, il s'est ramifié en versions modernes comme FreeBSD ou OpenBSD.
GNU et BSD sont tous deux inspirés d'Unix et ont des philosophies, une syntaxe, etc. légèrement différentes.
la source
Les coreutils d'Ubuntu sont une collection d'applications gérées par GNU qui inclut une charge entière de choses (regardez apt-cache show coreutils). Les BSD ont leurs propres versions (GNU n'est pas compatible avec la licence BSD).
la source