Sintaksis:
trap [-lp] [[arg] signal_spec… ]atau
perangkap [aksi] [sinyal]Kunci | Deskripsi |
-aku | Ini digunakan untuk menampilkan daftar semua nama sinyal dengan nomor yang sesuai. |
-p | Ini digunakan untuk menampilkan perintah sinyal atau perintah perangkap untuk signal_spec. |
argumen | Ini digunakan untuk menjalankan perintah ketika shell menerima sinyal. |
signal_spec | Ini berisi nama sinyal atau nomor sinyal. |
- Perintah perangkap tanpa nilai arg atau dengan nilai arg '-' akan mengatur ulang sinyal yang ditentukan ke nilai aslinya.
- Perintah perangkap dengan nilai arg 'null' akan mengabaikan sinyal yang ditentukan yang dikirim oleh shell atau perintah.
- Sebuah signal_spec dengan nilai, keluar(0) akan mengeksekusi arg setelah keluar dari shell.
- Sebuah signal_spec dengan nilai debug akan mengeksekusi arg sebelum setiap perintah tunggal.
- Sebuah signal_spec dengan nilai kembali akan mengeksekusi arg setiap kali fungsi shell dijalankan atau skrip dijalankan oleh “.”.
- Sebuah signal_spec dengan nilai berbuat salah akan mengeksekusi arg setiap kali pada kegagalan perintah.
Perintah jebakan tanpa opsi dan argumen apa pun
Jalankan perintah berikut dari terminal untuk menampilkan daftar semua perintah yang terkait dengan setiap kondisi. Jika ada perintah 'trap' yang tidak disetel sebelumnya, maka perintah berikut tidak akan menampilkan informasi apa pun.
$ perangkapPerintah jebakan dengan opsi -l
Jalankan perintah berikut dari terminal untuk menampilkan daftar semua nama sinyal dengan nomor.
$ perangkap -lOutput dari perintah di atas akan menampilkan daftar 64 sinyal dengan angka.
Atur perintah trap untuk ERR dan EXIT
Perintah pertama berikut akan menetapkan perintah 'trap' yang akan dijalankan ketika terjadi kesalahan shell atau shell keluar. Perintah 'jebakan' ini akan dihapus suhu.txt file dari lokasi saat ini. Perintah 'ls' digunakan untuk memeriksa suhu.txt file ada atau tidak di lokasi saat ini. akhirnya keluar perintah digunakan untuk menutup terminal dan menjalankan perintah 'jebakan' yang telah ditetapkan sebelumnya.
$ trap 'rm temp.txt' err keluar$ l
$ keluar
Output berikut akan muncul setelah menjalankan perintah di atas.
Sekarang, jika pengguna membuka terminal lagi setelah keluar dan menjalankan perintah 'ls' maka suhu.txt file tidak akan ada.
Atur perintah 'trap' dengan nomor sinyal SIGUP, SIGQUIT dan SIGKILL
Nomor sinyal SIGUP, SIGQUIT dan SIGKILL adalah 1, 3 dan 9. Perintah pertama berikut akan membuat jebakan untuk ketiga sinyal ini. Ketika salah satu dari sinyal ini akan terjadi maka pesan “Perintah perangkap dijalankan”akan mencetak. Jalankan perintah berikut dari terminal.
$ trap 'echo Perintah perangkap dijalankan' 1 3 9Ketika pengguna akan menekan Ctrl+C untuk menghasilkan sinyal yang ditetapkan dengan perintah 'trap' maka then 'gema' perintah perintah perangkap akan dijalankan dan output berikut akan muncul:.
Setel perintah 'jebakan' untuk SIGTERM dalam skrip
SIGTERM sinyal digunakan untuk menghentikan proses segera dengan melepaskan sumber dayanya. Buat file bash bernama 'trapskrip.SH' dengan kode berikut. Perulangan for tak terbatas dideklarasikan dalam skrip yang akan mencetak teks secara terus-menerus hingga SIGTERM sinyal terjadi. Pengguna harus menekan Ctrl+Z untuk menghasilkan SIGTERM sinyal.
trapskrip.SH
#!/bin/bash# Atur jebakan untuk sinyal SIGINT dan SIGTERM
trap "echo Program dihentikan." TANDA SIGTERM
#Tampilkan pesan untuk menghasilkan SIGTERM
echo "Tekan Ctrl+Z hentikan proses"
#Inisialisasi variabel penghitung, i
saya = 1
#deklarasikan tak terbatas untuk loop
untuk(;;)
melakukan
#Cetak pesan dengan penghitung i
echo "menjalankan loop selama $i kali"
#Tingkatkan penghitung satu per satu
((i++))
selesai
Jalankan skrip dengan menjalankan perintah berikut dan tekan Ctrl + Z untuk menghasilkan SIGTERM sinyal. Output serupa berikut akan muncul:.
$ bash trapskrip.SH
Setel perintah 'jebakan' untuk menjalankan fungsi berdasarkan sinyal tertentu
Anda dapat mengaitkan perintah 'jebakan' dengan fungsi apa pun yang ditentukan pengguna. Buat bash bernama fungsi perangkap.SH dan tambahkan skrip berikut. Di sini, fungsi khusus bernama fungsi() dideklarasikan untuk mencetak pesan sederhana, "Tugas selesai". Perulangan for-in didefinisikan untuk membaca dan mencetak daftar semua file dan folder dari direktori kerja saat ini. 'perangkap' perintah yang didefinisikan di awal daftar akan memanggil fungsi, fungsi() ketika program berakhir.
fungsi perangkap.SH
#!/bin/bash# Panggil fungsi fungsi saat keluar
fungsi perangkap keluar
# Deklarasikan fungsi
fungsi fungsi()
echo "Tugas selesai"
# Baca file dan folder dari daftar direktori saat ini menggunakan for loop
untuk saya di *
melakukan
gema "$i"
selesai
Jalankan skrip dari terminal.
Jalankan skrip.
$ bash trapfunc.SHOutput berikut menunjukkan bahwa, "Tugas selesai” teks dicetak setelah mencetak semua file dan folder dari direktori saat ini.
Kesimpulan
Tutorial ini menunjukkan bagaimana perintah 'trap' dapat digunakan di Linux untuk melakukan tugas otomatis apa pun berdasarkan sinyal yang dihasilkan. Ini membantu pengguna untuk melacak berbagai jenis kesalahan dan mengambil tindakan yang tepat yang dapat ditetapkan sebelumnya dengan menggunakan perintah ini. Banyak program atau skrip mengalokasikan beberapa sumber daya tertentu saat berjalan di sistem. Jika ada program atau skrip yang berjalan keluar atau berhenti secara tidak normal maka sumber daya yang digunakan oleh program itu akan diblokir. Perintah 'trap' dapat digunakan untuk menyelesaikan masalah ini. Tugas pembersihan sumber daya dapat dilakukan dengan mudah dengan menggunakan perintah ini. Harapan, pembaca akan mendapatkan ide yang jelas tentang penggunaan perintah ini setelah membaca tutorial ini.