0 votos

¿Qué significa cuando un proceso en la salida "ps -el" no muestra la ruta completa del ejecutable?

En Catalina v10.15.7, estoy usando:

ps -el

para investigar todos los procesos en ejecución.

Tengo 430 procesos en ejecución. Ignorando aquellos asociados con terminales abiertas, me gustaría entender por qué estos 6 procesos no tienen la ruta completa a su archivo ejecutable listada al usar ps -el:
aslmanager, auditd, autofsd, cloudphotod, endpointsecurityd, SafeEjectGPUAgent

aslmanager y auditd están en /usr/sbin, y sin embargo /usr/sbin/syslogd, /usr/sbin/notifyd, y otros 31 procesos en ejecución desde /usr/sbin tienen su ruta completa listada en la salida de ps -el.

autofsd y endpointsecurityd están ubicados en /usr/libexec, sin embargo otros 97 procesos en ejecución ubicados en /usr/libexec sí tienen sus rutas completas listadas.

Parece haber aliasing ocurriendo con cloudphotod y SafeEjectGPUAgent para archivos ejecutables en el contexto de la salida de ps -el.

Me gustaría aprender sobre las excepciones de la salida de ps -el cuando no se muestran las rutas completas de los ejecutables.

0voto

Jose Chavez Puntos 645

No es realmente un caso de excepciones de salida dentro del comando ps.

Lo que hace ps es que lista todos los procesos, y en particular imprime el primer elemento de la llamada argv de cada proceso. Por convención, el primer elemento contiene el nombre del ejecutable, pero en realidad no es necesario que sea de esa manera.

Descrito de forma general, cuando por ejemplo inicias un programa en la Terminal escribiendo este comando:

/usr/bin/less document.txt

La terminal (por ejemplo, zsh o bash) realizará alguna variante de exec() para pedir al sistema operativo que ejecute ese proceso. exec() toma varios parámetros, principalmente la ruta y nombre del programa a ejecutar (/usr/bin/less), y una lista de argumentos para que el programa procese. El primer argumento es por convención el nombre del programa en sí, por lo que la terminal generalmente colocará lo que escribiste para iniciar el programa allí. El segundo argumento es "document.txt" en este ejemplo.

Entonces, con less en funcionamiento, puedes ejecutar ps -el en otra terminal, y verás el proceso listado como /usr/bin/less.

Sin embargo, si en cambio escribes esto en la Terminal:

cd /usr/bin/
./less ~/document.txt

Descubrirás que al ejecutar ps -el en otra Terminal, el proceso ahora se muestra simplemente como ./less.

Por lo tanto, esa es la razón por la que algunos programas listan una ruta completa y otros no. Simplemente se debe a la forma en que fueron iniciados originalmente.

Si ahora ejecutas

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X