Perintah Linux

Perintah Bash trap

Perintah Bash trap
Perintah bash bawaan yang digunakan untuk melaksanakan perintah ketika shell menerima sebarang isyarat disebut 'trap'. Apabila ada kejadian, bash akan mengirimkan pemberitahuan dengan isyarat apa pun. Banyak isyarat tersedia dalam bash. Isyarat bash yang paling biasa adalah SIGINT (Signal Interrupt). Apabila pengguna menekan CTRL + C untuk mengganggu proses dari terminal maka isyarat ini dihantar untuk memberitahu sistem.  Bagaimana anda boleh menggunakan perintah perangkap untuk menangani pelbagai jenis isyarat dijelaskan dalam tutorial ini.

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

$ perangkap

Perangkap perangkap dengan pilihan -l

Jalankan arahan berikut dari terminal untuk memaparkan senarai semua nama isyarat dengan nombor.

$ perangkap -l

Keluaran 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 9

Bila 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.sh

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

Cara Menunjukkan Kaunter FPS dalam Permainan Linux
Permainan Linux mendapat dorongan utama ketika Valve mengumumkan sokongan Linux untuk klien Steam dan permainan mereka pada tahun 2012. Sejak itu, ban...
Cara memuat turun dan Mainkan Sid Meier's Civilization VI di Linux
Pengenalan permainan Civilization 6 adalah konsep moden mengenai konsep klasik yang diperkenalkan dalam siri permainan Age of Empires. Idea itu cukup ...
Cara Memasang dan Memainkan Doom di Linux
Pengenalan Doom Seri Doom berasal dari tahun 90an selepas pembebasan Doom yang asal. Ini adalah hit seketika dan sejak saat itu dan seterusnya siri pe...