ver uso que procesos procesador porcentaje para memoria mas consumen consola comando caracteristicas linux unix

que - ver uso cpu linux



Filtrar por nombre de proceso y registrar el uso de la CPU (3)

Otra opción es:

top -b -d 1 -p $(pgrep -d'','' java) -n 120 > log.txt

  • La opción -d permite establecer la frecuencia utilizada por la parte superior para actualizar los datos.
  • La opción -b significa que no se usa la interfaz tradicional de arriba. En cambio, envía todo a la salida estándar y luego puede usar un conducto (|) o una redirección (>).
  • La opción -n informa sobre el número de iteraciones que debería ejecutarse.

Después de eso puedes escribir:

cat log.txt | grep USER_OF_PROCESS

Verá el tiempo de ejecución del proceso y también% CPU, memoria y todo eso.

¿Hay una opción para el comando superior de Linux donde puedo filtrar procesos por nombre y escribir el uso de CPU de ese proceso cada 1 segundo en un archivo de registro?


Para filtrar la salida de top por nombre de proceso, puede usar pgrep para obtener una lista de PID por nombre de proceso y luego pasarlos a la opción -p de top . Por ejemplo:

top -p $(pgrep -d'','' http)

Nota: la opción -d'','' delimita los PID con comas, que es lo que espera la top -p . Nota 2: top devolverá un mensaje de error si no hay procesos en ejecución que coincidan con el nombre que especifique en pgrep .

Para escribir los resultados de la top de un archivo, use la opción -n 1 (solo una iteración) y redirija la salida a su archivo de registro.

top -p $(pgrep -d'','' http) -n 1 >> your_log_file

Para hacer eso cada segundo, ¿quizás un ciclo while con un sleep haría?

while :; do top -p $(pgrep -d'','' http) -n 1 >> your_log_file; sleep 1; done

Para marcar el tiempo de cada entrada, puede agregar el resultado de la date . P.ej

while :; do top -p $(pgrep -d'','' http) -n 1 >> log.txt; date >> log.txt; sleep 1; done


#You can run following script as ./cpurecorder.sh pid filename #It will generate output file with memory usage and cpu utilisation. #You can log other variable by searching man for ps. `enter code here`filepath=/home/rtcsadm # modify as desired interval=20 # reports per minute timelimit=6000 # how long to run, in seconds mydate=`date "+%H:%M:%S"` # the timestamp freq=$((60/$interval)) # for sleep function while [ "$SECONDS" -le "$timelimit" ] ; do ps -p$1 -opid -opcpu -opmem -ocomm -c | grep $1 | sed "s/^/$mydate /" >> $filepath/$2.txt sleep 3 mydate=`date "+%H:%M:%S"` done