Syntax:
trap [-lp] [[arg] signal_spec…]nebo
trap [akce] [signál]Klíč | Popis |
-l | Slouží k zobrazení seznamu všech názvů signálů s odpovídajícím číslem. |
-p | Používá se k zobrazení signálu nebo příkazu trap pro signal_spec. |
arg | Používá se k provedení příkazu, když shell obdrží signál (y). |
signal_spec | Obsahuje název signálu nebo číslo signálu. |
- Příkaz Trap bez hodnoty arg nebo s hodnotou „-“ arg nastaví zadaný signál na původní hodnotu.
- Příkaz Trap s hodnotou 'null' arg bude ignorovat specifikovaný signál odeslaný shellem nebo příkazem.
- Signal_spec s hodnotou, výstup (0) po ukončení z shellu provede arg.
- Signal_spec s hodnotou ladit provede arg před každým jednotlivým příkazem.
- Signal_spec s hodnotou vrátit se provede arg pokaždé, když se spustí funkce shellu nebo skript spuštěný “.“.
- Signal_spec s hodnotou chybovat provede arg pokaždé při selhání příkazu.
Trap příkaz bez jakékoli volby a arg
Spuštěním následujícího příkazu z terminálu zobrazte seznam všech příkazů spojených s každou podmínkou. Pokud není nastaven žádný příkaz „trap“, pak následující příkaz nezobrazí žádné informace.
$ pastTrap příkaz s volbou -l
Spuštěním následujícího příkazu z terminálu zobrazte seznam všech názvů signálů s číslem.
$ trap -lVýstup výše uvedeného příkazu zobrazí seznam 64 signálů s čísly.
Nastavte příkaz trap pro ERR a EXIT
Následující první příkaz nastaví příkaz „trap“, který se provede, když dojde k chybě shellu nebo ukončí shell. Tento příkaz „trap“ odstraní tepl.txt soubor z aktuálního umístění. Příkaz 'ls' se používá ke kontrole tepl.txt soubor existuje nebo není v aktuálním umístění. Nakonec výstup příkaz se používá k uzavření terminálu a provedení dříve nastaveného příkazu „trap“.
$ trap 'rm temp.txt 'err exit$ ls
$ výstup
Po spuštění výše uvedených příkazů se zobrazí následující výstup.
Nyní, pokud uživatel po ukončení terminál znovu otevře a provede příkaz 'ls' tepl.txt soubor nebude existovat.
Nastavte příkaz „trap“ s číslem signálu SIGUP, SIGQUIT a SIGKILL
Číslo signálu SIGUP, SIGQUIT a SIGKILL jsou 1, 3 a 9. Následující první příkaz nastaví past na tyto tři signály. Když dojde k některému z těchto signálů, zobrazí se zpráva „Je spuštěn příkaz Trap”Vytiskne. Spusťte následující příkaz z terminálu.
$ trap 'echo Trap příkaz proveden' 1 3 9Když uživatel stiskne Ctrl + C vygenerovat signál přiřazený příkazem 'trap' a poté 'echo' provede se příkaz trap a objeví se následující výstup.
Nastavte příkaz „trap“ pro SIGTERM ve skriptu
SIGTERM signál se používá k okamžitému ukončení procesu uvolněním jeho zdrojů. Vytvořte soubor bash s názvem 'trapscript.sh„s následujícím kódem. Ve skriptu je deklarována nekonečná smyčka for, která bude tisknout text nepřetržitě do SIGTERM dojde k signálu. Uživatel musí stisknout Ctrl + Z vygenerovat SIGTERM signál.
trapscript.sh
#!/ bin / bash# Nastavit past na signály SIGINT a SIGTERM
trap "echo Program je ukončen."SIGTERM SIGINT
# Zobrazit zprávu pro generování SIGTERM
echo "Stiskněte Ctrl + Z zastavit proces"
# Inicializovat proměnnou čítače, tj
i = 1
#declare nekonečno pro smyčku
pro(;;)
dělat
# Tisknout zprávu s počítadlem i
echo „spuštění smyčky $ i krát“
# Zvýšení počitadla o jednu
((i ++))
Hotovo
Spusťte skript spuštěním následujícího příkazu a stisknutím Ctrl + Z vygenerujte SIGTERM signál. Zobrazí se následující podobný výstup.
$ bash trapscript.sh
Nastavením příkazu „trap“ spustíte funkci na základě konkrétního signálu
Příkaz „trap“ můžete přidružit k jakékoli uživatelem definované funkci. Vytvořte bash s názvem trapfunc.sh a přidejte následující skript. Zde je pojmenována vlastní funkce func () je deklarováno pro tisk jednoduché zprávy, "Úkol splněn". Smyčka for-in je definována pro čtení a tisk seznamu všech souborů a složek aktuálního pracovního adresáře. 'past' příkaz, který je definován na začátku seznamu, zavolá funkci, func () když program skončí.
trapfunc.sh
#!/ bin / bash# Volání funkce func na výstupu
odchod z funkce trap
# Deklarujte funkci
funkce func ()
echo "Úkol dokončen"
# Přečíst soubory a složky aktuálního seznamu adresářů pomocí smyčky for
pro i v *
dělat
ozvěna „$ i“
Hotovo
Spusťte skript z terminálu.
Spusťte skript.
$ bash trapfunc.shTo ukazuje následující výstup, "Úkol splněn”Text se vytiskne po vytištění všech souborů a složek aktuálního adresáře.
Závěr
Tento výukový program ukazuje, jak lze příkaz „trap“ v systému Linux použít k provedení jakéhokoli automatizovaného úkolu na základě generovaného signálu. Pomáhá uživatelům sledovat různé typy chyb a provádět správné akce, které lze přiřadit dříve pomocí tohoto příkazu. Mnoho programů nebo skriptů přiděluje při spuštění v systému některé konkrétní zdroje. Pokud se některý spuštěný program nebo skript neobvykle ukončí nebo ukončí, jsou prostředky použité tímto programem blokovány. K vyřešení tohoto problému lze použít příkaz 'trap'. Úkol čištění zdrojů lze snadno provést pomocí tohoto příkazu. Doufám, že čtenář získá jasnou představu o použití tohoto příkazu po přečtení tohoto tutoriálu.