11 votos

Indica si el proceso en ejecución está siendo ejecutado bajo Rosetta o es nativo de M1 por línea de comandos

Si tienes un MacBook basado en M1, puedes saber si un proceso en ejecución en la máquina es de Apple/M1 o de Intel/Rosetta en el Monitor de Actividad, pero ¿hay alguna forma de obtener esta información en la línea de comandos?

Me gustaría poder mostrar rápidamente un recuento de cuántos procesos de Intel están actualmente funcionando en mi máquina bajo Rosetta.

Imagen del monitor de actividad mostrando la arquitectura

0 votos

¿Tienes una captura de pantalla que puedas compartir del resultado del monitor de actividad?

0 votos

Definitivamente es posible saber desde dentro del proceso (ver developer.apple.com/documentation/apple-silicon/…) - es decir, puedes crear algo que sea consciente de si se está ejecutando en rosetta o no.

0 votos

@MrR: sí: ibb.co/VTspjVj Ver la columna "Arquitectura" en el lado derecho.

10voto

staffan Puntos 3299

TL,DR: fuser /usr/libexec/rosetta/runtime

Sé cómo ver qué procesos son no nativos. No sé cómo distinguir entre arquitecturas no nativas diferentes, pero en la práctica solo hay una

Un proceso no nativo tiene el tiempo de ejecución de Rosetta abierto. Puedes usar fuser para listar qué procesos tienen un archivo dado abierto. Puedes usar lsof para ver qué archivos tiene abierto un proceso dado.

$ arch -x86_64 sleep 868686 &
[1] 65444
$ sleep 123123123 &
[2] 65446
$ fuser /usr/libexec/rosetta/runtime
/usr/libexec/rosetta/runtime: 65444
$ lsof -p65444 -p65446 | grep /usr/libexec/rosetta/runtime
sleep   65444 gilles  txt    REG   1,18    220064 1152921500312773394 /usr/libexec/rosetta/runtime

Necesitarás sudo para ver los procesos de otros usuarios (pero normalmente los procesos del sistema deberían ser nativos).

2voto

Nopik Puntos 111

Aquí tienes un fragmento para verificar todos los pids de Rosetta 2 e inspeccionarlos:

ps -p `fuser /usr/libexec/rosetta/runtime | sed -e 's/.*: //' | sed -e 's/ /,/g'`

1 votos

O ps -p `fuser /usr/libexec/rosetta/runtime 2> /dev/null`

1 votos

El mensaje ps: se requiere un argumento -- p se devuelve si no hay procesos de pid de Rosetta ejecutándose.

2voto

En realidad, esto se puede hacer con AppleScript si conoces el PID del proceso:

osascript -e 'tell application "System Events" to return architecture of processes whose unix id is 758'

0voto

DeathCamel57 Puntos 1

Obtenga la lista de pids (uno por línea):

fuser /usr/libexec/rosetta/runtime 2>/dev/null | xargs -n1

Luego puedes usarlo para filtrar con grep:

ps aux | grep -f <(fuser /usr/libexec/rosetta/runtime 2>/dev/null | xargs -n1)

0 votos

¿En qué se diferencia o mejora esta respuesta existente apple.stackexchange.com/a/431166/237?

-1voto

Mr R Puntos 224

Definitivamente puedes descartar algunas cosas (ir al terminal). por ejemplo

# ps -ef | grep -i firefox$
  502 56288     1   0 11Mar21 ??       207:43.89 /Applications/Firefox.app/Contents/MacOS/firefox

USA el nombre del ejecutable y pásalo al comando file.

# file /Applications/Firefox.app/Contents/MacOS/firefox
/Applications/Firefox.app/Contents/MacOS/firefox: Mach-O executable de 64 bits x86_64

Entonces si te da x86_64, debe estar ejecutándose bajo Rosetta - tiene solo arquitectura x86_64 (la anterior a M1).

En una máquina M1 algunas cosas vienen con binarios universales - por ejemplo haz lo mismo para Safari y obtengo algo así (lo siento, la máquina está desconectada .. esto es TCP-over-ME por lo que puede no ser 100% correcto :-)

# file /Applications/Safari.app/Contents/MacOS/Safari
/Applications/Safari.app/Contents/MacOS/Safari: binario universal Mach-O con 2 arquitecturas: [x86_64: ejecutable de 64 bits x86_64][arm64e: ejecutable de 64 bits arm64e]

.. y luego procede a dar salida para cada arquitectura ... Según Apple "prefiere" arm64e.

2 votos

Fuera de tema, pero: "lo siento, la máquina está desconectada ... esto es TCP-over-ME". ¡Eso no es una brecha de aire!

3 votos

Esto solo muestra para qué arquitecturas está compilado un binario, no muestra la arquitectura bajo la cual se está ejecutando.

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