
¿Cuál es la diferencia entre los procesos enumerados por ps
y ps -A
?
Respuesta1
sin -A
, ps solo imprimirá los procesos que pertenecen a la sesión actual. Piense en ello como "absolutamente todo". En una nota relacionada, -a
hace lo mismo, pero restringiéndolo al propietario de la sesión (nombre de usuario).
Respuesta2
El comando GNU ps
sufre un caso grave de trastorno de personalidad múltiple. Por eso no es de extrañar que la página del manual sea confusa. Quizás un vistazo a los manuales de BSD pueda ayudar. Después de todo, esta preguntaesetiquetadoUnix.
El funcionamiento de BSD ps
es bastante sencillo si se tienen dos cosas en mente:
- Los procesos se seleccionan para su visualización utilizando dos filtros básicos. Esos filtros sonende forma predeterminada y las opciones de línea de comando las activanapagado. La simpleza sin adornos
ps
se filtra así a través de ambos. - La sintaxis BSD se remonta a mucho tiempo atrás. Aunque los BSD modernos utilizan
getopt
la convención de opciones precedida por un signo menos, las opciones y el comportamiento relevantes aquí son muy similares a los de hace 30 años.
Ese comportamiento es este:
- La opción
-a
(históricamentea
)apagatodo el filtrado "selector".- Las otras opciones de la línea de comando especifican selectores:
-U
selecciona por UID,-t
controlando el nombre del terminal,-p
selecciona por ID de proceso, etc. Todos estos son omitidos por-a
. - Si no se proporcionan selectores explícitamente, elselector predeterminadoes mostrar solo los procesos que se ejecutan con el mismo UID efectivo que el usuario que invocó
ps
. Este selector predeterminado es el filtro histórico que esta opción desactiva.
- Las otras opciones de la línea de comando especifican selectores:
- La opción
-x
(históricamentex
)apagala restricción de queps
solo muestren procesos que tengan un terminal de control.
Históricamente, BSD ps
no tenía otra A
opción. Pero los BSD modernos implementan una -A
opción, también utilizable como A
, para (un grado de) compatibilidad con la (posterior) Especificación Única UNIX. -A
es simplemente lo mismo que usar ambos -a
y -x
: desactiva ambas restricciones, dejando una con todos los procesos, sin filtrar.
OpenBSD y NetBSD documentan la -A
opción, en el caso de NetBSD explícitamente como -a -x
. FreeBSD no lo hace, pero un comentario en el código fuente indica que existe como una opción de compatibilidad SUSv5 intencionalmente no documentada.