GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo ejecutar un comando durante un tiempo específico en Linux

El otro día estaba transfiriendo un archivo grande usando rsync a otro sistema en mi red de área local. Dado que es un archivo muy grande, tomó alrededor de 20 minutos completarlo. No quiero esperar mucho más, y tampoco quiero terminar manualmente el proceso presionando CTRL+C. Me preguntaba si podría haber formas fáciles de ejecutar un comando durante un tiempo específico y eliminarlo automáticamente una vez que se agote el tiempo en sistemas operativos similares a Unix, de ahí esta publicación. Sigue leyendo.

Ejecutar un comando durante un tiempo específico en Linux

Podemos hacer esto de dos métodos.

Método 1:usar el comando "tiempo de espera"

El método más común es usar tiempo de espera comando para este fin. Para aquellos que no lo saben, el comando de tiempo de espera limitará efectivamente el tiempo de ejecución absoluto de un proceso. El comando timeout es parte del paquete GNU coreutils, por lo que viene preinstalado en todos los sistemas GNU/Linux.

Digamos que desea ejecutar un comando solo por un tiempo específico y luego eliminarlo automáticamente una vez que pasa el tiempo. Para hacerlo, usamos:

$ timeout <time-limit-interval> <command>

Por ejemplo, el siguiente comando terminará después de 10 segundos.

$ timeout 10s tail -f /var/log/pacman.log

Tampoco tiene que especificar el sufijo "s" para los segundos. El siguiente comando es el mismo que el anterior.

$ timeout 10 tail -f /var/log/pacman.log

Los otros sufijos disponibles son:

  • 'm' por minutos,
  • 'h' para horas
  • 'd' por días.

Si ejecuta este tail -f /var/log/pacman.log seguirá ejecutándose hasta que lo finalice manualmente presionando CTRL+C. Sin embargo, si lo ejecuta junto con timeout comando, se eliminará automáticamente después del intervalo de tiempo dado.

En caso de que el comando aún se esté ejecutando incluso después del tiempo de espera, puede enviar un matar señal como a continuación.

$ timeout -k 20 10 tail -f /var/log/pacman.log

En este caso, si el comando de cola sigue ejecutándose después de 10 segundos, el comando de tiempo de espera le enviará una señal de interrupción después de 20 segundos y lo finalizará.

El comando Tmeout puede ser especialmente útil para solucionar problemas de hardware. Por ejemplo, ejecute el siguiente comando para mostrar todos los mensajes del búfer de anillo del kernel, pero solo durante 10 segundos.

$ timeout 10 dmesg -w

Para obtener más detalles, consulte las páginas man.

$ man timeout

A veces, un programa en particular puede tardar mucho en completarse y terminar congelando su sistema. En tales casos, puede usar este truco para finalizar el proceso automáticamente después de un tiempo determinado.

Además, considere usar Cpulimit , una sencilla aplicación para limitar el uso de la CPU de un proceso. Para más detalles, consulta el siguiente enlace.

  • Cómo limitar el uso de CPU de un proceso en Linux

Método 2:uso del programa "Tiempo límite"

La utilidad Timelimit ejecuta un comando determinado con los argumentos proporcionados y finaliza el proceso generado después de un tiempo determinado con una señal determinada. Primero, pasará la advertencia señal y luego, después del tiempo de espera, enviará la matar señal.

A diferencia de la utilidad de tiempo de espera, el límite de tiempo tiene más opciones. Puede pasar varios argumentos como killsig, warnsig, killtime, warntime, etc.

Está disponible en los repositorios predeterminados de los sistemas basados ​​en Debian. Entonces, puedes instalarlo usando el comando:

$ sudo apt-get install timelimit

Para sistemas basados ​​en Arch, está disponible en AUR. Por lo tanto, puede instalarlo usando cualquier programa de ayuda de AUR como Pacaur , Empaquetador , Yay , Yaourt etc.

Para otras distribuciones, descargue la fuente desde aquí e instalarlo manualmente.

Después de instalar el programa Timelimit, ejecute el siguiente comando durante un tiempo específico, por ejemplo, 10 segundos:

$ timelimit -t10 tail -f /var/log/pacman.log

Si ejecuta el límite de tiempo sin argumentos, utilizará los valores predeterminados:warntime=3600 segundos , advertencia=15 , tiempo de matar=120 , killsig=9 .

Para obtener más detalles, consulte las páginas man y el sitio web del proyecto que se encuentran al final de esta guía.

$ man timelimit

Y, eso es todo por hoy. Espero que esto haya sido útil. Más cosas buenas por venir. ¡Estén atentos!

¡Salud!


Linux
  1. Cómo usar el comando táctil de Linux + ejemplos

  2. Cómo usar el comando Su en Linux

  3. DSH:ejecute un comando de Linux en varios hosts a la vez

  4. ¿Cómo ejecutar la aplicación durante un tiempo determinado en Shell?

  5. 'tail -f' por una cantidad de tiempo específica

Cómo ejecutar comandos de Linux en segundo plano

Comando de tiempo de espera en Linux

Último comando en Linux

Comando de tiempo de espera de Linux explicado para principiantes (con ejemplos)

Cómo ejecutar Windows 95 en Linux

Cómo ejecutar un comando periódicamente en Linux usando Watch