Příkazy pro Linux

Příkaz Bash trap

Příkaz Bash trap
Vestavěný příkaz bash, který se používá k provedení příkazu, když shell obdrží jakýkoli signál, se nazývá 'trap'. Když nastane nějaká událost, bash odešle oznámení jakýmkoli signálem. Mnoho signálů je k dispozici v bash. Nejběžnějším signálem bash je SIGINT (Signal Interrupt). Když uživatel stiskne kombinaci kláves CTRL + C, aby přerušil jakýkoli proces z terminálu, je tento signál odeslán, aby informoval systém.  Jak můžete pomocí příkazu trap zpracovat různé typy signálů, je vysvětleno v tomto výukovém programu.

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.

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.

$ past

Trap 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 -l

Vý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 9

Když 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.sh

To 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.

V systému Windows 10 nefunguje levé tlačítko myši
Pokud používáte speciální myš s notebookem nebo stolním počítačem, ale levé tlačítko myši nefunguje ve Windows 10/8/7 z nějakého důvodu uvádíme několi...
Kurzor při psaní v systému Windows 10 skáče nebo se pohybuje náhodně
Pokud zjistíte, že kurzor myši skáče nebo se pohybuje sám, automaticky, náhodně při psaní v notebooku nebo počítači se systémem Windows, pak vám někte...
Jak obrátit směr posouvání myši a touchpadu ve Windows 10
Myš a Touchpadnejenže usnadňují výpočet, ale jsou efektivnější a méně časově náročné. Nemůžeme si představit život bez těchto zařízení, ale přesto je ...