A Bash parancsának időkorlátozása szükségtelen késleltetés nélkül

A Bash Parancsanak Idokorlatozasa Szuksegtelen Kesleltetes Nelkul



A Bash-ban néha előfordulhat, hogy olyan parancsot kell futtatnia, amelynek végrehajtása hosszú ideig tart, és előfordulhat, hogy nem akarja a végtelenségig várni a befejezésre. A probléma egyik megoldása egy időtúllépési parancs használata, amely korlátozza a parancs futtatásának időtartamát. Ez a cikk megvitatja, hogyan lehet szükségtelen késedelem nélkül időtúllépni egy parancsot a Bashban.

A Bash parancsának időtúllépése

Egy parancs időtúllépéséhez a Bash-ban használhatjuk a 'időtúllépés' parancs. A „timeout” parancs alapértelmezés szerint nem érhető el minden rendszeren, de a legtöbb Linux disztribúción telepíthető a csomagkezelővel, itt van az „timeout” parancs szintaxisa:







időtúllépés [ VÁLASZTÁSI LEHETŐSÉG ] IDŐTARTAM Parancs [ ARG ]


Itt az „OPTION” egy opcionális argumentum, amely az időtúllépési parancs viselkedését határozza meg, az „IDŐTARTAM” a parancs futásának határideje, a „COMMAND [ARG]” pedig az a parancs és argumentumai, amelyeket futtatni szeretnénk.



Tegyük fel például, hogy a „sleep” parancsot öt másodpercig akarjuk futtatni, de három másodperc után le akarjuk állítani a parancsot, és itt van a példahéjszkript:



#!/bin/bash
visszhang 'Alvó parancs indítása 3 másodperces időtúllépéssel...'
időtúllépés 3s alvás 5s
visszhang 'Az alvási parancs befejeződött.'


Itt az időtúllépés időtartamát 3 másodpercben, az „alvás” parancs időtartamát pedig 5 másodpercben adtam meg. Az „időtúllépés” parancs 3 másodperc után leállítja az „alvó” parancsot, bár az „alvó” parancs normál esetben 5 másodpercig futna.






A szükségtelen késleltetés elkerülése érdekében a „timeout” parancs használatakor használhatjuk a „-k” opciót. A „-k” opció megad egy jelet, amelyet a rendszer küld a parancsnak, ha az meghaladja az időtúllépési korlátot. Ez a jel a parancs azonnali leállítását okozza, ahelyett, hogy megvárná, hogy kecsesen befejeződjön.

Tegyük fel például, hogy az „alvás” parancsot öt másodpercig akarjuk futtatni, de három másodperc után le akarjuk állítani a parancsot, és el szeretnénk küldeni a SIGINT jelet, ha az meghaladja az időtúllépési korlátot. Ezt a következő parancs futtatásával tehetjük meg:



#!/bin/bash
visszhang 'Elalvás parancs indítása 3 másodperces időtúllépéssel és SIGINT jelzés 2 másodperc után'
időtúllépés -k 2s 3s alvás 5mp
visszhang'
Alvás parancs befejezett. '


Itt megadtam az időtúllépés időtartamát 3 másodpercben, a küldendő jelet pedig SIGINT-ként, ha túllépi az időkorlátot. A „-k 2s” opció azt határozza meg, hogy a SIGINT jelet az időtúllépési határ két másodperce után kell elküldeni.

Következtetés

A Bash parancsainak időtúllépése egy hasznos eszköz, amely segíthet a parancsok hatékonyabb futtatásában, és megelőzheti a szükségtelen késéseket. Az „timeout” parancs és a „-k” kapcsoló használatával korlátozhatja a parancs futtatásának időtartamát, és azonnali leállítási jelzést küldhet, ha túllépi az időtúllépési korlátot. Ezzel időt takaríthat meg, és hatékonyabban futtathatja a szkripteket.