Linux Komutları

Bash tuzak komutu

Bash tuzak komutu
Kabuk herhangi bir sinyal aldığında bir komutu yürütmek için kullanılan yerleşik bir bash komutuna 'trap' denir. Herhangi bir olay meydana geldiğinde, bash bildirimi herhangi bir sinyalle gönderir. Bash'de birçok sinyal mevcuttur. Bash'ın en yaygın sinyali SIGINT'tir (Sinyal Kesintisi). Kullanıcı terminalden herhangi bir işlemi kesmek için CTRL+C'ye bastığında, sistemi bilgilendirmek için bu sinyal gönderilir.  Bu eğitimde, farklı sinyal türlerini işlemek için trap komutunu nasıl kullanabileceğiniz anlatılmaktadır.

Sözdizimi:

tuzak [-lp] [[arg] signal_spec… ]

veya

tuzak [eylem] [sinyal]
Anahtar Açıklama
-ben İlgili numara ile tüm sinyal adlarının listesini görüntülemek için kullanılır.
-p Signal_spec için sinyal komutunu veya tuzak komutunu görüntülemek için kullanılır.
argüman Kabuk sinyal(ler)i aldığında bir komutu yürütmek için kullanılır.
sinyal_spec Sinyal adı veya sinyal numarası içerir.

Herhangi bir seçenek ve argüman olmadan tuzak komutu

Her koşulla ilişkili tüm komutların listesini görüntülemek için terminalden aşağıdaki komutu çalıştırın. Daha önce herhangi bir 'trap' komutu ayarlanmamışsa, aşağıdaki komut herhangi bir bilgi görüntülemeyecektir.

$ tuzak

-l seçeneği ile tuzak komutu

Numaralı tüm sinyal adlarının listesini görüntülemek için terminalden aşağıdaki komutu çalıştırın.

$ tuzak -l

Yukarıdaki komutun çıktısı, sayılarla birlikte 64 sinyalin listesini gösterecektir.

ERR ve EXIT için tuzak komutu ayarla

Aşağıdaki ilk komut, herhangi bir kabuk hatası oluştuğunda veya kabuk çıktığında yürütülecek bir 'tuzak' komutu ayarlayacaktır. Bu 'tuzak' komutu kaldıracak sıcaklık.Txt geçerli konumdan dosya. kontrol etmek için 'ls' komutu kullanılır sıcaklık.Txt dosya mevcut konumda var veya yok. son olarak çıkış komut, terminali kapatmak ve daha önce ayarlanmış olan 'trap' komutunu çalıştırmak için kullanılır.

$ trap 'rm temp.txt' hatası çıkışı
$ l
$ çıkış

Yukarıdaki komutları çalıştırdıktan sonra aşağıdaki çıktı görünecektir.

Şimdi, kullanıcı çıkıştan sonra tekrar terminali açar ve 'ls' komutunu çalıştırırsa, o zaman sıcaklık.Txt dosya olmayacak.

SIGUP, SIGQUIT ve SIGKILL sinyal numarasıyla 'trap' komutunu ayarlayın

sinyal numarası SİGUP, SIGQUIT ve SIGKILL 1, 3 ve 9. Aşağıdaki ilk komut, bu üç sinyal için bir tuzak kuracaktır. Bu sinyallerden herhangi biri meydana geldiğinde, “Tuzak komutu yürütülür” yazdıracak.  Terminalden aşağıdaki komutu çalıştırın.

$ trap 'echo Trap komutu yürütüldü' 1 3 9

Kullanıcı ne zaman basacak Ctrl+C 'trap' komutuyla atanan sinyali oluşturmak için 'Eko' trap komutunun komutu yürütülecek ve aşağıdaki çıktı görünecektir.

Bir komut dosyasında SIGTERM için 'tuzak' komutunu ayarlayın

SIGTERM sinyali, kaynaklarını serbest bırakarak süreci hemen sonlandırmak için kullanılır. ' adlı bir bash dosyası oluşturuntrapscript.ş' aşağıdaki kodla. Komut dosyasında, bir metni sürekli olarak yazdıracak olan sonsuz bir for döngüsü bildirildi SIGTERM sinyal oluşur. Kullanıcının basması gerekir Ctrl+Z üretmek SIGTERM sinyal.

trapscript.ş

#!/bin/bash
 
# SIGINT ve SIGTERM sinyalleri için bir tuzak ayarlayın
trap "echo Program sonlandırıldı." SİGTERM İŞARETİ
 
#SIGTERM oluşturmak için mesajı görüntüle
echo "Ctrl+Z'ye basın işlemi durdurun"
 
#Sayaç değişkenini başlat, i
ben=1
 
#döngü için sonsuz deklare
için(;;)
yapmak
#i sayacı ile mesajı yazdır
echo "$i kez döngüyü çalıştırma"
#Sayacı bir artır
((i++))
bitti

Aşağıdaki komutu yürüterek komut dosyasını çalıştırın ve oluşturmak için Ctrl+Z tuşlarına basın SIGTERM sinyal. Aşağıdaki benzer çıktı görünecektir.

$ bash trapscript.ş

Belirli bir sinyale dayalı bir işlevi çalıştırmak için bir 'tuzak' komutu ayarlayın

Bir 'tuzak' komutunu kullanıcı tanımlı herhangi bir işlevle ilişkilendirebilirsiniz. Adlı bir bash oluşturun tuzak.ş ve aşağıdaki betiği ekleyin. Burada, adlı özel bir işlev işlev() basit bir mesaj yazdıracağı bildirildi, "Görev tamamlandı". Geçerli çalışma dizinindeki tüm dosya ve klasörlerin listesini okumak ve yazdırmak için bir for-in döngüsü tanımlanmıştır. 'tuzak' listenin başında tanımlanan komut, işlevi çağırır, işlev() program sona erdiğinde.

tuzak.ş

#!/bin/bash
# Çıkışta çağrı fonksiyonu
tuzak işlevi çıkışı
# Fonksiyonu bildir
işlev işlevi ()
 
echo "Görev tamamlandı"

# Döngüyü kullanarak mevcut dizin listesinin dosya ve klasörlerini okuyun
ben için *
yapmak
yankı "$i"
bitti

Komut dosyasını terminalden çalıştırın.

Komut dosyasını çalıştırın.

$ bash tuzak.ş

Aşağıdaki çıktı gösteriyor ki, "Görev tamamlandı” metni, geçerli dizinin tüm dosya ve klasörlerini yazdırdıktan sonra yazdırılır.

Sonuç

Bu öğretici, oluşturulan sinyale dayalı olarak herhangi bir otomatik görevi yapmak için Linux'ta 'trap' komutunun nasıl kullanılabileceğini gösterir. Bu komutu kullanarak kullanıcıların farklı türdeki hataları izlemesine ve daha önce atanabilecek uygun eylemi gerçekleştirmesine yardımcı olur. Birçok program veya komut dosyası, sistemde çalışırken bazı belirli kaynakları tahsis eder. Çalışan herhangi bir program veya komut dosyası anormal şekilde çıkar veya sonlandırılırsa, o program tarafından kullanılan kaynaklar engellenir. Bu sorunu çözmek için 'trap' komutu kullanılabilir. Bu komut kullanılarak kaynak temizleme görevi kolayca yapılabilir. Umarım, okuyucu bu öğreticiyi okuduktan sonra bu komutun kullanımları hakkında net bir fikir edinecektir.

AppyMouse On-screen Trackpad and Mouse Pointer for Windows Tablets
Tablet users often miss the mouse pointer, especially when they are habitual to using the laptops. The touchscreen Smartphones and tablets come with m...
Middle mouse button not working in Windows 10
The middle mouse button helps you scroll through long webpages and screens with a lot of data. If that stops, well you will end up using the keyboard ...
How to change Left & Right mouse buttons on Windows 10 PC
It's quite a norm that all computer mouse devices are ergonomically designed for right-handed users. But there are mouse devices available which are s...