He leído que el ps
comando puede aceptar banderas en dos formatos:
- El formato Unix en el que debes preceder las banderas con un guión.
- El formato BSD en el que no debes preceder las banderas con un guión.
Ahora se pueden usar las mismas banderas con ambos formatos; por ejemplo, los siguientes comandos significan lo mismo:
ps -x
ps x
¿O el formato Unix tiene su propio conjunto de indicadores, mientras que el formato BSD tiene un conjunto de indicadores completamente diferente?
Respuesta1
Elpágina de manualresponde a tu pregunta:
Se pueden mezclar libremente opciones de diferentes tipos, pero pueden aparecer conflictos. También existen algunas opciones que son funcionalmente idénticas, debido a los numerosos estándares e
ps
implementaciones con las queps
es compatible.Tenga en cuenta que
ps -aux
es distinto deps aux
. Los estándares POSIX y UNIX requieren queps -aux
se impriman todos los procesos propiedad de un usuario llamado "x", así como también que se impriman todos los procesos que serían seleccionados por la-a
opción. Si el usuario llamado "x" no existe, este ps puede interpretar el comandops aux
e imprimir una advertencia. Este comportamiento tiene como objetivo ayudar en la transición de viejos guiones y hábitos. Es frágil, está sujeto a cambios y, por lo tanto, no se debe confiar en él.
Las banderas son diferentes, pero se pueden combinar. Aunque normalmente elegirías uno,p.ejya sea ps aux
o ps -ef
para ver detalles de todos los procesos, no una mezcla.
El único x
indicador es el BSD, por lo que ps x
produce ps -x
el mismo resultado; pero eso no funciona para banderas definidas en ambas variantes.
Todo esto es específico deprocps
yprocps-ng
. La equivalencia de ps x
y ps -x
es el resultado de una etapa de análisis de “segunda oportunidad” que se invoca si un primer paso no analiza completamente todos los argumentos; esto no está documentado en la página de manual pero se menciona enel HACKING
archivo en el código fuente:
A menos que la personalidad fuerce el análisis de BSD, parser.c intenta analizar la línea de comando como un desastre mixto BSD+SysV+Gnu. En caso de error, se intenta el análisis BSD. Si falla el análisis de BSDdespuésSe ha intentado el análisis de SysV, el mensaje de error proviene del análisis de SysV original.