He visto muchos comandos que aceptan una "sintaxis BSD", así como su sintaxis estándar. Tome el ps
comando para un ejemplo:
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
Entonces, ¿cuál es la diferencia entre estas dos rutas? En general, cuando dicen en sintaxis BSD, ¿qué elementos debo recordar? ¿Es esta sintaxis solo para los comandos que están en el BSD también?
command-line
syntax
Mohammad Reza Rezwani
fuente
fuente
ps
optargs es estar al borde de un abismo que el hombre no debía saber.Respuestas:
¿Cuál es la diferencia entre MS Office y LibreOffice? Entre Firefox y Chrome?
Hacen aproximadamente lo mismo, pero son de diferentes personas con objetivos ligeramente diferentes.
Tal vez la mejor pregunta es ¿por qué BSD, Linux, Unix y OSX distribuciones comparten por lo que muchos de los comandos? Esto se reduce al cumplimiento de POSIX . POSIX es básicamente un conjunto de estándares para sistemas operativos tipo Unix; estipula la API principal, los comandos y cómo deberían funcionar esos comandos.
En el caso de
ps
(un comando estipulado por POSIX) se exigen ciertos argumentos. Estos incluyen estos BSD. Todos los comandos derivados de POSIX tienen sus propias páginas man, pero necesitan una instalación por separado. Paraps
:Entonces, ¿por qué BSD no usa nuestro
ps
(o viceversa)?ps
paquete (procps
ver:dpkg -S $(which ps)
) es un tenedor de otroprocps
paquete . Ambos tienen licencia GPL. Esto es incompatible con la licencia de BSD, por lo que no se puede incluir allí. ( Podríamos incluir BSD pero no es necesario).ps
es bastante específico del kernel. Creo que son técnicamente incompatibles.¿Qué pasa con otras aplicaciones?
La mayoría de los comandos para el cumplimiento de POSIX provienen del
coreutils
paquete de Ubuntu . Este paquete representa el GNU en GNU / Linux y también tiene licencia GPL. BSD envía sus propias versiones con licencia compatibles con BSD que se adhieren a POSIX pero no son necesariamente las mismas que sus homólogos de GNU.ps
no es el único comando POSIX que no es GNU . Hay muchos de ellos.Mientras lidero, ¿por qué deberían serlo? Son de diferentes personas durante mucho, mucho tiempo. Esa es la respuesta corta aquí.
fuente
Esto se remonta a la historia algo tortuosa de Unix (Wikipedia tiene un diagrama simplificado , que está lejos de ser completo). En particular, durante un tiempo, hubo dos corrientes principales: el Sistema V desarrollado por AT&T y el BSD desarrollado en la Universidad de California, Berkeley. Esto fue a principios de la década de 1980, mucho antes de Linux (1991), y mucho menos de Ubuntu (2004). A menudo, estas dos corrientes tomaron decisiones diferentes, e incluso hoy encontrarás referencias ocasionales a las variantes o características de "Sistema V" y "BSD".
El
ps
comando data de uno de los primeros lanzamientos de Unix (no estaba en la versión 1, la primera página de manual que puedo encontrar en línea es de la versión 5 (p.94) en 1974). En ese momento,ps
solo tenía algunas opciones, por ejemplops a
, mostraría todos los procesos en lugar de solo el usuario, yps x
mostraría procesos sin terminal conectado. Notarás que las opciones no comienzan con-
: en ese momento, la convención de usar-
para las opciones no era casi sistemática como lo es hoy, era principalmente una cosa para los comandos que tomaban los nombres de los archivos como argumentos normales.Con el tiempo, los diversos hilos de Unix se extendieron
ps
con muchas más opciones. La variante BSD eligió conservar la sintaxis original, sin encabezado-
,a
yx
aún existe hoy. La variante del Sistema V eligió adoptar la convención sintáctica de-
for options, y usó letras diferentes (por ejemplo,ps -e
para mostrar todos los procesos). Oracle (anteriormente Sun) Solaris es un ejemplo de una variante del Sistema V (Solaris también envía unps
ejecutable separado , en un directorio que no está en el predeterminadoPATH
, para aplicaciones escritas con BSD en mente).En el momento en que Linux entró en escena, las personas que lo usaban a menudo tenían experiencia previa de una variante de Unix u otra. Linux a veces hizo las cosas a la manera del Sistema V, a veces a la manera BSD, a veces a su manera, ya sea por consideraciones técnicas o por la experiencia y los gustos de quien implementó la función. El
ps
comando de Linux comenzó con opciones similares a BSD, por ejemplo,ps ae
para mostrar todos los procesos e incluir variables de entorno en la lista. Con el tiempo (a fines de la década de 1990, no recuerdo exactamente cuándo), los autores de lasps
opciones agregadas de Linux para las personas que estaban acostumbradas al Sistema V. Por lo tanto, hoy en díaps ax
ops -e
enumerarán todos los procesos en Linux, e incluso hay una variable de entorno (PS_PERSONALITY
) hacerps
comportarse más como varias variantes de Unix antiguas de Unix, en aras de scripts antiguos y personas con hábitos establecidos.A las personas que usaban varias variantes de Unix no les gustaba que tuvieran que modificar sus programas y sus hábitos al cambiar de una variante de Unix a otra. Así que hubo un esfuerzo por estandarizar un subconjunto de funcionalidades. Esto llevó al estándar POSIX (liderado por el IEEE ), que Ubuntu sigue en general. La primera edición cuyo alcance incluía el
ps
comando salió en 1992; este no está disponible en línea, pero la edición de 1997 sí . Para elps
comando, como en muchos otros casos, POSIX adoptó la forma del Sistema V de hacer las cosas.La
ps
sintaxis estándar del comando es compatible con System V y POSIX. Además, se puede decir que esa sintaxis es estándar porque se usa-
para introducir opciones por defecto. Algunas opciones existen solo en una de las dos sintaxis; Afortunadamente se pueden mezclar en la misma llamada.En términos generales, "BSD" vs "Sistema V" no tiene ninguna implicación técnica. Se refiere a la historia: "BSD" es la elección que BSD hizo en la década de 1980 y, por lo tanto, "System V" es la elección que AT&T y sus socios (especialmente Sun) tomaron. "POSIX" es la elección que tomó el comité de estandarización de IEEE.
fuente
La sintaxis 'estándar' a la que te refieres es en realidad el sistema operativo GNU que se desarrolló en la década de 1980. Las utilidades y la filosofía basadas en GNU se combinaron con el kernel de Linux para desarrollar las distribuciones de Linux más modernas (incluido Ubuntu).
El sistema operativo BSD se desarrolló a fines de la década de 1970, independiente de GNU, y luego se ramificó en versiones modernas como FreeBSD u OpenBSD.
Tanto GNU como BSD están inspirados en Unix y tienen filosofías, sintaxis, etc. ligeramente diferentes.
fuente
Coreutils de Ubuntu es una colección de aplicaciones mantenidas por GNU que incluye una gran cantidad de cosas (mira apt-cache show coreutils). Los BSD tienen sus propias versiones (GNU no es compatible con la licencia BSD).
fuente