De opdracht `trap` in Unix wordt gebruikt om signalen te verwerken , die asynchrone gebeurtenissen zijn die een loopproces kunnen onderbreken. Signalen worden gebruikt om een proces van verschillende gebeurtenissen op de hoogte te stellen, zoals:
* beëindigingssignalen: Deze signalen worden naar een proces verzonden om het te beëindigen, bijvoorbeeld, `sigint` (interrupt) of` sigterm` (eindigen).
* Foutsignalen: Deze signalen worden naar een proces verzonden om een fout aan te geven, bijvoorbeeld 'sigsegv' (segmentatieovertreding).
* Andere signalen: Er zijn verschillende andere signalen, zoals `sigusr1` en` sigusr2`, die voor aangepaste doeleinden kunnen worden gebruikt.
Hoe `trap` werkt
Met de opdracht `trap` kunt u opgeven welke acties moeten worden ondernomen wanneer een bepaald signaal door een proces wordt ontvangen. Het heeft de volgende syntaxis:
`` `bash
Trap 'Command' -signaal
`` `
* `command` :Dit is de opdracht of volgorde van opdrachten die worden uitgevoerd wanneer het opgegeven signaal wordt ontvangen.
* `Signal` :Dit is het signaalnummer of de naam die u wilt vangen.
voorbeelden
1. Handling `sigint` (interrupt):
`` `bash
Trap 'echo "onderbroken! Verlichting ..."; exit 'int
`` `
Hiermee wordt het bericht "onderbroken! Uitgang ..." afgedrukt en het script vervolgens verlaat wanneer `Ctrl+C` wordt ingedrukt (die het` sigint` -signaal verzendt).
2. negeren `sigquit` (Quit):
`` `bash
trap '' stoppen
`` `
Dit negeert het `sigquit` -signaal (meestal verzonden door` Ctrl+\ `) en voorkomt dat het het script beëindigt.
3. Een opruimscript uitvoeren:
`` `bash
trap 'opruimen.sh' exit
`` `
Hiermee wordt het script `CleanUp.sh` uitgevoerd wanneer het proces verloopt, ongeacht de reden voor beëindiging.
belangrijke opmerkingen:
* Het opdracht `trap` beïnvloedt alleen het huidige shell -proces.
* Als u signalen in een onderliggende proces wilt verwerken, moet u 'trap' gebruiken binnen dat kindproces.
* U kunt de optie `-l` gebruiken met` trap` om alle beschikbare signalen te vermelden.
Samenvattend biedt `Trap` een krachtig mechanisme voor het verwerken van signalen en het beheersen van het gedrag van uw UNIX -scripts in reactie op verschillende gebeurtenissen. |