# Htop

htop es un sistema de monitorización, administración y visor de procesos interactivo. Fue publicado en 2004 por Hisham Muhammad. Es una alternativa más intuitiva, interactiva y funcional del conocido como Top, incluido en sistemas operativos de tipo Unix. Utilizado en sistemas basados en Unix, programado en C, usa la biblioteca ncurses para facilitar al usuario su uso desde la terminal (shell).
Debido a que las interfaces de monitorización del sistema no están estandarizadas en sistemas operativos tipo Unix, gran parte del código debe reescribirse para cada sistema operativo. Se agregó soporte multiplataforma desde la versión htop 2.0.

## Estructura

Htop 2.0 se divide en tres secciones, cabecera, área principal y pie de página.
* En la cabecera, muestra el uso de la CPU con porcentajes, memoria RAM y memoria de intercambio Swap. En la parte derecha de la cabecera, muestra las tareas activas, promedio de carga del sistema, tiempo de actividad que si supera los 100 días se activará un easter egg mostrando "(!)" y por último mostrará la batería restante.
* En el área principal se muestran todos los procesos activos del sistema, aportando la siguiente información para cada proceso.
| PID | ID del proceso |
| USER | El nombre de usuario del propietario del proceso o la identificación del usuario si el nombre no puede determinarse. |
| PRI | La prioridad interna del kernel para el proceso, normalmente es su valor NI más veinte. Diferente para procesos en tiempo real. |
| NI | El valor "nice" de un proceso, desde 19 (baja prioridad) a -20 (alta prioridad). Un alto valor significa que el proceso es "nice", permitiendo que otros tengan una prioridad relativa más alta. Solo root puede disminuir el valor. |
| VIRT | Representa el tamaño virtual de un proceso. |
| RES | Representa el tamaño de residente, que es una representación precisa de la cantidad de memoria física real que consume un proceso. Tamaño de las secciones de texto y datos, más el uso de la pila. |
| SHR | La cantidad de memoria compartida utilizada por una tarea. Refleja la memoria que podría compartirse potencialmente con otros procesos. |
| S | Estado del proceso. S: "sleeping" durmiendo (inactivo) R: "running" activo D: ininterrumpible Z: "zombie" (esperando que el padre lea su estado de salida) T: trazado o suspendido (por ejemplo, por SIGTSTP) W: paginación |
| CPU% | El porcentaje del tiempo de CPU que el proceso está usando actualmente. |
| MEM% | El porcentaje de memoria que el proceso está usando actualmente (basado en el tamaño de la memoria residente del proceso, M_RESIDENT). |
| TIME+ | El tiempo, medido en ciclos de reloj que el proceso ha gastado, en el tiempo del usuario y del sistema (UTIME, STIME). |
| Command | Ruta completa del comando. |
* En el pie de página se muestra un menú con todas las opciones disponibles para manejar y administrar los procesos en htop. Se pueden usar tanto con el ratón como con el teclado para ello se usan las teclas de función que van desde F1 a F10, accesos directos y métodos abreviados del teblado.
| Teclas/Combinación de teclas | Alternativa(s) | Función |
| F1 | ? o h | La pantalla de ayuda es una vista detallada de todos los accesos directos disponibles y sus alternativas |
| F2 | S | En el menú de configuración encontrará que puede modificar las diferentes características de htop |
| F3 | / | Búsqueda de procesos |
| F4 | \ | Filtrado de proceso incremental. escriba en parte de una línea de comando de proceso y solo se mostrarán los procesos cuyos nombres coincidan. Para cancelar el filtrado, ingrese la opción Filtro nuevamente y presione Esc |
| F5 | t | Vista de árbol, organiza procesos por "paternidad" y diseña las relaciones entre ellos como un árbol. Al alternar la tecla, se cambiará de árbol a la vista de clasificación seleccionada anteriormente. Al seleccionar una vista de clasificación, saldrá de la vista de árbol |
| F6 | < > | Ordenar, seleccione un campo para ordenar. El campo de ordenación actual se indica mediante un resaltado en el encabezado. En la vista de árbol, expande o contrae el subárbol actual. Un indicador "+" en el nodo del árbol indica que está contraído |
| F7 | ] | Aumenta la prioridad del proceso seleccionado (resta valor 'nice'). Esto solo puede hacerlo el superusuario |
| F8 | [ | Disminuye la prioridad del proceso seleccionado (aumenta valor 'nice') |
| F9 | k | "Matar" proceso: envía una señal que se selecciona en un menú, a uno o a un grupo de procesos. Si los procesos fueron marcados les envía la señal. Si ninguno está marcado, se envía al proceso seleccionado actualmente |
| F10 | q o C | Finaliza htop |
| Espacio | | Marcar o desmarcar un proceso. Los comandos que pueden operar en procesos múltiples, como "matar", se aplicarán a la lista de procesos marcados, en lugar de a la actual |
| U | | Elimina todas las marcas agregadas con la tecla "espacio" |
| P | | Ordena los procesos de acuerdo al uso de la CPU (CPU%) |
| M | | Ordena los procesos de acuerdo al uso de la memoria (MEM%) |
| T | | Ordena los procesos de acuerdo al tiempo de uso (TIME+) |
| u | | Mostrar solo procesos propiedad de un usuario especificado |
| K | | Ocultar hilos del kernel, evita que los hilos que pertenecen al kernel se muestren en la lista de procesos |
| H | | Ocultar subprocesos de usuario, en sistemas que los representan de forma diferente a los procesos ordinarios (como los sistemas basados en NPTL), esto puede ocultar subprocesos de los procesos del espacio de usuario en la lista de procesos |
| F | | Seguir proceso, si el orden de clasificación hace que el proceso seleccionado actualmente se mueva en la lista, haga que la barra de selección lo siga. Esto es útil para monitorear un proces, de esta manera, puede mantener un proceso siempre visible en la pantalla. Cuando se usa una tecla de movimiento, "seguir" pierde efecto |