Confundido sobre el significado del formato de banderas Unix vs. BSD para el comando "ps"

Confundido sobre el significado del formato de banderas Unix vs. BSD para el comando "ps"

He leído que el pscomando 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 psimplementaciones con las que pses compatible.

Tenga en cuenta que ps -auxes distinto de ps aux. Los estándares POSIX y UNIX requieren que ps -auxse 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 -aopción. Si el usuario llamado "x" no existe, este ps puede interpretar el comando ps auxe 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 auxo ps -efpara ver detalles de todos los procesos, no una mezcla.

El único xindicador es el BSD, por lo que ps xproduce ps -xel mismo resultado; pero eso no funciona para banderas definidas en ambas variantes.

Todo esto es específico deprocpsyprocps-ng. La equivalencia de ps xy ps -xes 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 HACKINGarchivo 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.

información relacionada