Sintaks:
perangkap [-lp] [[arg] signal_spec…]atau
perangkap [tindakan] [isyarat]Kunci | Penerangan |
-l | Ini digunakan untuk memaparkan senarai semua nama isyarat dengan nombor yang sesuai. |
-hlm | Ini digunakan untuk menampilkan perintah isyarat atau perintah perangkap untuk signal_spec. |
berhujah | Ini digunakan untuk menjalankan perintah ketika shell menerima sinyal. |
signal_spec | Ia mengandungi nama isyarat atau nombor isyarat. |
- Perangkap perangkap tanpa nilai arg atau dengan nilai arg - - 'akan menetapkan semula isyarat yang ditentukan ke nilai asalnya.
- Perangkap perangkap dengan nilai arg 'null' akan mengabaikan isyarat yang ditentukan oleh shell atau arahan.
- Sign_spec dengan nilai, jalan keluar (0) akan melaksanakan arg setelah keluar dari cengkerang.
- Sign_spec dengan nilai nyahpepijat akan melaksanakan arg sebelum setiap perintah.
- Sign_spec dengan nilai kembali akan menjalankan arg setiap kali fungsi shell dijalankan atau skrip yang dijalankan oleh “.".
- Sign_spec dengan nilai keliru akan melaksanakan arg setiap kali pada kegagalan arahan.
Perangkap perangkap tanpa pilihan dan argumen
Jalankan arahan berikut dari terminal untuk memaparkan senarai semua arahan yang berkaitan dengan setiap keadaan. Sekiranya ada arahan 'perangkap' yang tidak ditetapkan sebelumnya, perintah berikut tidak akan memaparkan maklumat.
$ perangkapPerangkap perangkap dengan pilihan -l
Jalankan arahan berikut dari terminal untuk memaparkan senarai semua nama isyarat dengan nombor.
$ perangkap -lKeluaran arahan di atas akan menunjukkan senarai 64 isyarat dengan nombor.
Tetapkan perintah perangkap untuk ERR dan EXIT
Perintah pertama berikut akan menetapkan perintah 'perangkap' yang akan dilaksanakan apabila terdapat ralat shell atau shell keluar. Perintah 'perangkap' ini akan dikeluarkan temp.txt fail dari lokasi semasa. Perintah 'ls' digunakan untuk memeriksa temp.txt fail ada atau tidak di lokasi semasa. akhir sekali jalan keluar arahan digunakan untuk menutup terminal dan melaksanakan perintah 'perangkap' yang ditetapkan sebelumnya.
$ trap 'rm temp.txt 'err keluar$ ls
$ keluar
Output berikut akan muncul setelah menjalankan perintah di atas.
Sekarang, jika pengguna membuka terminal sekali lagi setelah keluar dan melaksanakan perintah 'ls' maka temp.txt fail tidak akan wujud.
Tetapkan perintah 'perangkap' dengan nombor isyarat SIGUP, SIGQUIT dan SIGKILL
Nombor isyarat dari SIGUP, SIGQUIT dan SIGKILL adalah 1, 3 dan 9. Perintah pertama berikut akan menetapkan perangkap untuk ketiga-tiga isyarat ini. Apabila mana-mana isyarat ini akan berlaku maka mesej "Perintah perangkap dilaksanakan"Akan dicetak. Jalankan arahan berikut dari terminal.
$ trap 'perintah echo Trap dilaksanakan' 1 3 9Bila pengguna akan menekan Ctrl + C untuk menghasilkan isyarat yang diberikan dengan perintah 'perangkap' maka 'gema' arahan perintah perangkap akan dijalankan dan output berikut akan muncul.
Tetapkan perintah 'perangkap' untuk SIGTERM dalam skrip
TANDATANGAN isyarat digunakan untuk menghentikan proses dengan segera dengan melepaskan sumbernya. Buat fail bash bernama 'trapskrip.sh'dengan kod berikut. Infinite for loop dinyatakan dalam skrip yang akan mencetak teks secara berterusan hingga TANDATANGAN isyarat berlaku. Pengguna harus menekan Ctrl + Z untuk menjana TANDATANGAN isyarat.
trapskrip.sh
#!/ bin / bash# Tetapkan perangkap untuk isyarat SIGINT dan SIGTERM
perangkap "echo Program ini ditamatkan."TANDA TANDA
# Paparkan mesej untuk menghasilkan SIGTERM
gema "Tekan Ctrl + Z hentikan proses"
# Memulakan pemboleh ubah pembilang, i
i = 1
#tentukan tak terhingga untuk gelung
untuk (;;)
buat
#Cetak mesej dengan kaunter i
gema "menjalankan gelung sebanyak $ i kali"
#Tingkatkan kaunter satu persatu
((saya ++))
selesai
Jalankan skrip dengan melaksanakan perintah berikut dan tekan Ctrl + Z untuk menghasilkan TANDATANGAN isyarat. Keluaran serupa berikut akan muncul.
trapskrip $ bash.sh
Tetapkan perintah 'perangkap' untuk menjalankan fungsi berdasarkan isyarat tertentu
Anda boleh mengaitkan perintah 'perangkap' dengan fungsi yang ditentukan pengguna. Buat bash bernama trapfunc.sh dan tambahkan skrip berikut. Di sini, fungsi khas dinamakan func () dinyatakan mencetak pesanan ringkas, "Tugas selesai". Gelung untuk masuk didefinisikan untuk membaca dan mencetak senarai semua fail dan folder dari direktori kerja semasa. 'perangkap' arahan yang ditentukan pada awal senarai akan memanggil fungsi, func () semasa program tamat.
trapfunc.sh
#!/ bin / bash# Fungsi fungsi func semasa keluar
perangkap func keluar
# Menyatakan fungsi
fungsi func ()
gema "Tugas selesai"
# Baca fail dan folder senarai direktori semasa menggunakan loop
untuk saya di *
buat
gema "$ i"
selesai
Jalankan skrip dari terminal.
Jalankan skrip.
$ bash trapfunc.shOutput berikut menunjukkan bahawa, "Tugas selesai"Teks dicetak setelah mencetak semua fail dan folder dari direktori semasa.
Kesimpulannya
Tutorial ini menunjukkan bagaimana perintah 'trap' dapat digunakan di Linux untuk melakukan tugas automatik berdasarkan isyarat yang dihasilkan. Ini membantu pengguna untuk mengesan pelbagai jenis kesalahan dan mengambil tindakan yang tepat yang dapat diberikan sebelumnya dengan menggunakan perintah ini. Banyak program atau skrip memperuntukkan beberapa sumber tertentu ketika berjalan dalam sistem. Sekiranya ada program yang sedang berjalan atau skrip keluar atau dihentikan secara tidak normal maka sumber yang digunakan oleh program tersebut akan disekat. Perintah 'perangkap' boleh digunakan untuk menyelesaikan masalah ini. Tugas pembersihan sumber dapat dilakukan dengan mudah dengan menggunakan perintah ini. Harap, pembaca akan mendapat idea yang jelas mengenai penggunaan arahan ini setelah membaca tutorial ini.