Estoy haciendo script bash para mi uso. ¿Cómo puedo ejecutar un comando durante cierto tiempo, como 20 segundos y terminar el comando? Probé muchas soluciones pero nada funciona, también probé el comando timeout sin éxito. Por favor, dame alguna solución para esto.
por ejemplo: quiero ejecutar este comando en script y terminal después de 10 segundos
some command
some command > logfile &
en la primera línea. Luego puedes analizarlogfile
.Desde el indicador bash puedes usar "
your_command & sleep 20; kill $!
aptget install timeout
ytimeout -k 3m 14s your_command
expect
como se explica aquí: /unix/43340/how-to-introduce-timeout-for-shell-scriptingperl -e "alarm 10; exec @ARGV" "Your_command"
$COMMAND 2>&1 >/dev/null & WPID=$!; sleep $TIMEOUT && kill $! & KPID=$!; wait $WPID
( Fuente y explicación )fuente
Otra forma es usar pgrep $ pattern, o pkill $ pattern; devuelve todos los PID que coinciden con el patrón dado, buscando en todos los procesos en ejecución en la máquina. Entonces, para limitar el alcance de los PID a solo los que posee, use: pgrep -P $ mypid $ pattern, o pkill -P $ mypid $ pattern
Entonces, para ejecutar un proceso en segundo plano durante un período de tiempo establecido, su secuencia de comandos se vería así:
Tenga en cuenta que esto eliminará todos los procesos con el mismo patrón de nombre que se ejecuta bajo el PID principal actual. Por lo tanto, puede usar esto para iniciar múltiples procesos y matarlos a todos simultáneamente después de un cierto tiempo.
fuente
Podrías usar una alarma de línea de comandos como ebay-alarm
Instale el script del despertador y haga
ebay-alarm 10 sec -c some command &
fuente