Pengenalan kepada Paip Dinamakan di Bash Shell

Pengenalan kepada Paip Dinamakan di Bash Shell

Pada sistem pengendalian berasaskan Linux dan Unix, paip sangat berguna kerana ia adalah cara mudah untuk mencapai IPC (komunikasi antara proses). Apabila kita menyambungkan dua proses dalam saluran paip, output yang pertama digunakan sebagai input yang kedua. Untuk membina paip "tanpa nama" yang disebut, yang perlu kita lakukan hanyalah menggunakan | pengendali. Paip tanpa nama, atau tidak dinamakan bertahan selagi proses yang mereka sambungkan. Walau bagaimanapun, terdapat satu lagi jenis paip yang boleh kita gunakan: a FIFO, atau paip bernama. Dalam artikel ini kita akan melihat bagaimana paip bernama berfungsi dan dalam apa yang mereka berbeza dari paip standard.

Dalam tutorial ini anda akan belajar:

  • Apa itu paip yang dinamakan
  • Cara membuat paip bernama
  • Cara mengenali paip yang dinamakan
  • Bagaimana Paip Dinamakan Berfungsi
  • Cara memadam paip bernama
Pengenalan kepada Paip Dinamakan di Bash Shell

Keperluan perisian dan konvensyen yang digunakan

Keperluan Perisian dan Konvensyen Talian Perintah Linux
Kategori Keperluan, konvensyen atau versi perisian yang digunakan
Sistem Pengedaran bebas
Perisian Utiliti yang digunakan dalam tutorial ini tersedia secara lalai
Yang lain Kebenaran akar untuk melaksanakan tugas pentadbiran
Konvensyen # - Memerlukan komando linux yang diberikan untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah
$-memerlukan komando Linux yang diberikan sebagai pengguna yang tidak berkadar biasa

Peringatan cepat bagaimana paip berfungsi

Dalam tutorial sebelumnya, kita sudah melihat bagaimana paip berfungsi dan apa yang dapat digunakan dalam pengenalan kepada pengalihan shell, tetapi mari kita buat rekap cepat. Pada skrip kami atau dalam sesi shell interaktif kami, kami boleh menggunakan pengendali paip (|) untuk menyambungkan dua proses bersama -sama, supaya output standard (stdout) proses di sebelah kiri paip digunakan sebagai input standard (stdin) proses di sebelah kanannya. Berikut adalah demonstrasi yang cepat dan remeh:

$ echo "goot" | tr 't "d' baik 

Dalam contoh di atas, output dari echo arahan digunakan sebagai input standard dari tr satu. Bagi anda yang tidak tahu, tr Perintah boleh digunakan untuk menterjemahkan atau memadam aksara: di sini kami menggunakannya untuk menggantikan semua kejadian t watak dengan d satu. Hasil dari kedua -dua perintah itu disalurkan bersama dalam apa yang disebut a saluran paip, Adakah rentetan "baik".

Apa yang kita gunakan dalam contoh di atas, dipanggil paip yang tidak dinamakan. Jenis paip seperti itu hanya sehingga arahan dilaksanakan, dan tidak dapat diakses selepas itu. Sekiranya kita mahu membina paip dan dapat merujuknya selepas penggunaannya
Kita mesti menggunakan yang dipanggil Paip bernama, mari kita lihat apa yang mereka ada, dan bagaimana mereka berfungsi.



Apa itu paip yang dinamakan?

Mengenai sistem operasi berasaskan Unix seperti Linux, a Dinamakan paip, atau FIFO (Pertama, keluar pertama), adalah jenis fail "istimewa" yang digunakan untuk mewujudkan hubungan antara proses. Tidak seperti paip "standard", paip bernama diakses sebagai sebahagian daripada sistem fail, sama seperti jenis fail lain. Setelah dicipta, paip bernama, memang akan muncul sebagai fail standard; Walau bagaimanapun, ia akan kelihatan kosong, kerana ia tidak akan digunakan untuk "menyimpan" maklumat. Data yang akan melalui paip akan diuruskan secara langsung oleh kernel: FIFO fail akan digunakan sebagai rujukan.

Membuat paip yang dinamakan

Untuk membuat a Dinamakan paip, Dalam sistem pengendalian berasaskan Linux moden, yang perlu kita lakukan adalah menggunakan mkfifo perintah. Dalam penggunaannya yang paling asas, semua yang kita perlu lulus sebagai hujah kepada program ini adalah nama yang kita mahu gunakan untuk FIFO fail. Untuk
contohnya, untuk membuat paip bernama yang dipanggil paip0, Kami akan berlari:

$ mkfifo pipe0 

Sekiranya dikehendaki, paip bernama juga boleh dibuat dengan set keizinan tertentu menggunakan -m pilihan (pendek untuk --mod) daripada mkfifo perintah. Pilihan menerima bit kebenaran fail Sebagai hujah, jadi sebagai contoh, untuk membuat yang dinamakan
paip dengan 644 Kebenaran, kami akan berlari:

$ mkfifo -m 644 paip0 

Mari kita lihat fail yang dibuat sebagai hasil menjalankan arahan di atas:

$ ls -l pipe0 prw-r-r---. 1 EGDOC EGDOC 0 Dis 15 11:55 PIPE0 

Di sini kita berlari ls perintah dengan -L pilihan, supaya format penyenaraian panjang digunakan. Dalam output arahan kita dapat melihat bahawa huruf pertama yang muncul sebelum bit keizinan adalah p: ini menunjukkan bahawa
failnya memang paip bernama.



Menggunakan paip bernama

Kami tahu bagaimana paip "standard" berfungsi: output standard proses di sebelah kiri paip | digunakan sebagai input standard yang di sebelah kanan. Paip bernama berfungsi dengan baik. Mari kita tunjukkan. Perkara pertama yang kita mahukan
lakukan adalah menulis sesuatu ke paip yang dinamakan. Untuk melakukan itu, kita boleh menggunakan pengalihan mudah; Kami membuka emulator terminal baru dan kami menjalankan arahan berikut:

$ echo "Mesej Input"> PIPE0 

Sesuatu yang nampaknya tidak dijangka berlaku sebaik sahaja kita menekan Enter: perintah itu kelihatan digantung. Ini disebabkan oleh cara kerja paip yang dinamakan: untuk data yang akan dilalui melalui paip bernama, FIFO Fail mesti dibuka di kedua -dua hujungnya, dengan proses yang menulis kepadanya, dan sekurang -kurangnya seseorang yang ingin membaca daripadanya.

Dalam kes ini, kerana tidak ada yang "membaca" dari paip dan "memakan" kandungannya, kami mengatakan bahawa paip itu disekat. Untuk menunjukkan ini, mari kita buka emulator terminal lain dan gunakan kucing Perintah untuk "Baca" dari Pipa Dinamakan:

mesej input $ Cat Pipe0 

Seperti yang anda dapat lihat, mesej yang kami tulis ke paip bernama telah dicetak di skrin dan di terminal yang kami gunakan untuk menulis ke paip, semuanya kembali normal (perintah itu tidak tergantung lagi, dan shell prompt muncul lagi). Seperti yang anda lihat dalam klip di bawah, perkara yang sama berlaku jika kita mula -mula membuka paip untuk membaca, dan tidak ada yang menulis kepadanya:

Sekali lagi, tiada apa yang ditulis di paip0 fail, dan apabila kandungan paip bernama "dimakan" paip dibersihkan. Salah satu kelebihan paip bernama melalui paip standard ialah proses penulis dan pembaca tidak perlu bermula pada masa yang sama.



Memadam paip yang dinamakan

Oleh kerana paip bernama hanyalah fail, untuk membuangnya, dengan mengandaikan kita mempunyai kebenaran yang tepat untuk melakukan tindakan, kita boleh menggunakan rm perintah. Untuk mengeluarkan paip yang kami buat dalam contoh sebelumnya, kami akan menjalankan:

$ rm pipe0 

Kesimpulan

Dalam artikel ini kita belajar bagaimana Paip bernama Bekerja di Linux. Kami melihat bagaimana mereka diakses sebagai sebahagian daripada sistem fail, kerana mereka kelihatan seperti fail lain. Kami melihat bagaimana membuat paip bernama menggunakan mkfifo perintah, apa
adalah keanehan mereka, dan contoh penggunaan mereka. Akhirnya, kami melihat bagaimana untuk memadam paip bernama.

Tutorial Linux Berkaitan:

  • Mengendalikan input pengguna dalam skrip bash
  • Perkara yang hendak dipasang di Ubuntu 20.04
  • Pengenalan kepada Automasi, Alat dan Teknik Linux
  • Cara Menyiapkan VSFTPD di Debian
  • Cara melancarkan proses luaran dengan Python dan ..
  • Mint 20: Lebih baik daripada Ubuntu dan Microsoft Windows?
  • Menguasai Gelung Skrip Bash
  • Skrip Bash: Pengendali Unary dijangka
  • Cara menyebarkan isyarat kepada proses kanak -kanak dari bash ..
  • Sistem Hung Linux? Cara melarikan diri ke baris arahan dan ..