Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

168
Vistas
script de Linux de recursos, deshabilitar/vaciar entrada adicional

Buenas tardes a todos,

Creé una herramienta de monitoreo de recursos que funciona bastante bien.

  • Extrae el uso promedio de la CPU
  • Extrae el uso de memoria promedio
  • Incluso calcula el porcentaje de rendimiento de la NIC (si tiene una NIC de 1 Gb, mostrará el porcentaje que se procesa a la vez)... y sí, sé que esto es más una estimación aproximada/límite máximo teórico de una NIC.

Sin embargo, tengo un problema con mi script. La parte del código con el que estoy experimentando mi problema se encuentra a continuación (convertí algunos a pseudocódigo para simplificar).

 COUNT=1 read -rsp "When you are ready to begin, please press any key" -n1 echo "processing" sleep 3 while [ ${COUNT} = "1" ; do read -t 1 -n 1 if [$? = 0 ] ; then exit 0 else `Resource command` > ${cpulog} file for future graphs `Resource command` > ${memlog} file for future graphs `Resource command` > ${network} log file for future graphs `etc` fi done

Básicamente, presiona cualquier tecla para iniciar el programa, y cada vez que presiona cualquier tecla en el teclado después de que el programa haya comenzado (bucle Mientras), el programa deja de grabar información y continúa.

Ahora este script funciona y hace todo lo que necesito que haga. El problema con el que me he encontrado es cuando "presionas cualquier tecla" .

Tenga en cuenta que hay dos puntos en la secuencia de comandos que esperan la pulsación de una tecla.

Si tuviera que presionar cualquier tecla más de una vez en el primer punto, la entrada de la segunda tecla sería procesada por mi comando read -t 1 -n 1 (en el segundo punto) y, por lo tanto, no podría ejecutar mis extracciones de recursos. Dado que eso sucede de inmediato, el script falla.

Básicamente, estoy tratando de averiguar si hay una manera de cerrar la entrada después de ese primer golpe de tecla por un tiempo limitado mientras recupero una cantidad limitada de datos, o vaciar cualquier entrada que se proporcionó antes de presionar mi read -t 1 dominio. Gracias.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

El script puede llamar a un pequeño programa, escrito en C, perl o similar, que llama a FIONREAD ioctl en stdin.

Luego, lea los caracteres adicionales inesperados que se eliminarán con una llamada de lectura; consulte el libro de recetas de Perl para determinar los bytes no leídos . De hecho, puede ingresar el código perl en la línea de comando con perl -e. para mantenerlo todo dentro del script bash.

over 4 years ago · Santiago Trujillo Denunciar

0

En la "línea de procesamiento", agregue el siguiente bucle:

 # Eat any remaining input while read -t 1 -n 1 do # Do nothing here : done # Continue processing now that all input has been consumed...

Agregará aproximadamente 1 segundo de retraso al inicio (más si el usuario está sentado allí presionando las teclas), pero de lo contrario hace lo que quiere.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda