2 votos

¿La redirección de la terminal no funciona en MacOS Mojave?

Sistema: MacBook Pro (principios de 2013), con Mojave actualizado.

Para analizar la utilización de la CPU cuando una aplicación se está ejecutando estoy haciendo lo mismo que he hecho una y otra vez en un sistema Linux; ejecutar el siguiente comando en la terminal:

top | grep idle

Esto funciona como debería, la salida de la pantalla es:

MacBook:Desktop Peregrino69$ top | grep idle
CPU usage: 13.14% user, 15.97% sys, 70.87% idle
CPU usage: 10.94% user, 8.53% sys, 80.52% idle
CPU usage: 10.95% user, 6.94% sys, 82.9% idle

Sin embargo, si lo hago

top | grep idle | tee ./utilization.txt

... inesperadamente no hay ninguna salida de terminal, y el archivo resultante está vacío. Al fallar esto he probado

top | grep idle >> ./utilization.txt

... con el mismo resultado.

Probar la redirección con un simple comando echo echo hello | tee foo funciona como se esperaba; la palabra "hola" aparece tanto en la pantalla como en foo.

¿Qué está pasando?

3voto

klanomath Puntos 19587

Si STDOUT es redirigido a una no-terminal (por ejemplo, un archivo) se utiliza un tamaño de búfer por defecto de 4096 Bytes. En la Terminal STDOUT se utiliza por defecto el búfer de línea.

Ejecutar el comando top | grep idle | tee >> ... llenará el buffer de 4k con ~45-50 Byte/s (dependiendo de la carga y la división sys|usr|idle). Después de un tiempo el primer buffer será escrito en el archivo. Aquí, tomó ~85 segundos para escribir el primer buffer al sistema de archivos.


Así que ten paciencia

2voto

Michael Zhou Puntos 167

Es necesario que produzcas un muestra de la salida del top.

top -l1 | grep idle | tee ./utilization.txt

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