Com esgotar el temps d'una ordre a Bash sense retards innecessaris

Com Esgotar El Temps D Una Ordre A Bash Sense Retards Innecessaris



A Bash, de vegades és possible que hàgiu d'executar una ordre que triga molt de temps a completar-se i és possible que no vulgueu esperar que acabi indefinidament. Una solució a aquest problema és utilitzar una ordre de temps d'espera que limita la quantitat de temps que es pot executar una ordre. Aquest article tractarà com esgotar el temps d'espera d'una ordre a Bash sense demora innecessària.

Esgota el temps d'espera d'una ordre a Bash

Per esgotar el temps d'una ordre a Bash, podem utilitzar el 'temps mort' comandament. L'ordre 'timeout' no està disponible de manera predeterminada en tots els sistemes, però es pot instal·lar mitjançant el gestor de paquets a la majoria de distribucions de Linux, aquí teniu la sintaxi de l'ordre 'timeout':





temps d'espera [ OPCIÓ ] COMANDAMENT DE DURADA [ ARG ]


Aquí, 'OPCIÓ' és un argument opcional que especifica el comportament de l'ordre de temps d'espera, 'DURADA' és el límit de temps per executar l'ordre i 'COMMAND [ARG]' és l'ordre i els seus arguments que volem executar.



Per exemple, suposem que volem executar l'ordre 'sleep' durant cinc segons, però volem esborrar el temps d'espera de l'ordre després de tres segons i aquí teniu l'exemple de l'script de l'intèrpret d'ordres:



#!/bin/bash
eco 'S'està iniciant la comanda de repòs amb un temps d'espera de 3 segons...'
temps d'espera 3s dormir 5 s
eco 'S'ha acabat l'ordre de repòs'.


Aquí he especificat la durada del temps d'espera com a 3 segons i la durada de l'ordre 'sleep' com a 5 segons. L'ordre 'temps d'espera' aturarà l'ordre 'sleep' després de 3 segons, tot i que l'ordre 'sleep' normalment s'executa durant 5 segons.






Per evitar retards innecessaris en utilitzar l'ordre 'timeout', podem utilitzar l'opció '-k'. L'opció '-k' especifica un senyal que s'enviarà a l'ordre si supera el límit de temps d'espera. Aquest senyal farà que l'ordre finalitzi immediatament, en lloc d'esperar que acabi amb gràcia.

Per exemple, suposem que volem executar l'ordre 'sleep' durant cinc segons, però volem esgotar l'ordre al cap de tres segons i enviar el senyal SIGINT si supera el límit de temps d'espera. Ho podem fer executant la següent comanda:



#!/bin/bash
eco 'Inicia la comanda de repòs amb un temps d'espera de 3 segons i el senyal SIGINT després de 2 segons'
temps d'espera -k 2s 3s dormir 5s
eco'
Dormir comandament acabat. '


Aquí he especificat la durada del temps d'espera com a 3 segons i el senyal que s'enviarà com a SIGINT si supera el límit de temps d'espera. L'opció '-k 2s' especifica que el senyal SIGINT s'ha d'enviar després de dos segons del límit de temps d'espera.

Conclusió

El temps d'espera d'una ordre a Bash és una eina útil que us pot ajudar a executar ordres de manera més eficient i evitar retards innecessaris. Si utilitzeu l'ordre 'timeout' i l'opció '-k', podeu limitar la quantitat de temps que pot executar una ordre i enviar un senyal per finalitzar-la immediatament si supera el límit de temps d'espera. Això us ajudarà a estalviar temps i a executar els vostres scripts de manera més eficient.