GNU/Linux >> Belajar Linux >  >> Linux

Contoh penggunaan pipa bernama di Linux Bash

Salah satu contoh terbaik penggunaan praktis pipa bernama...

Dari http://en.wikipedia.org/wiki/Netcat:

Perilaku berguna lainnya adalah menggunakan netcat sebagai proxy. Baik port dan host dapat dialihkan. Lihat contoh ini:

nc -l 12345 | nc www.google.com 80

Porta 12345 mewakili permintaan.

Ini memulai nc server pada port 12345 dan semua koneksi dialihkan ke google.com:80 . Jika browser web membuat permintaan ke nc , permintaan akan dikirim ke google tetapi tanggapan tidak akan dikirim ke browser web. Itu karena pipa searah. Ini dapat diatasi dengan pipa bernama untuk mengarahkan ulang input dan output.

mkfifo backpipe
nc -l 12345  0<backpipe | nc www.google.com 80 1>backpipe

Berikut perintahnya:

$ mkfifo named_pipe

$ echo "Hi" > named_pipe &

$ cat named_pipe

Perintah pertama membuat pipa.

Perintah kedua menulis ke pipa (memblokir). & letakkan ini di latar belakang sehingga Anda dapat terus mengetik perintah di shell yang sama. Itu akan keluar ketika FIFO dikosongkan oleh perintah berikutnya.

Perintah terakhir membaca dari pipa.


Buka dua cangkang yang berbeda, dan biarkan berdampingan. Di keduanya, buka /tmp/ direktori:

cd /tmp/

Yang pertama ketik:

mkfifo myPipe
echo "IPC_example_between_two_shells">myPipe

Yang kedua, ketik:

while read line; do echo "What has been passed through the pipe is ${line}"; done<myPipe

Shell pertama tidak akan memberi Anda prompt apa pun sampai Anda menjalankan bagian kedua dari kode di shell kedua. Itu karena fifo baca dan tulis memblokir.

Anda juga dapat melihat tipe FIFO dengan melakukan ls -al myPipe dan lihat detail jenis file khusus ini.

Langkah selanjutnya adalah memulai kode dalam skrip!


Linux
  1. Cara Menggunakan Pipes dan Named Pipes di Linux (dengan Contoh)

  2. Menggunakan Perintah Tidur Linux di Skrip Bash

  3. Redirect semua output ke file menggunakan Bash di Linux?

  1. Komunikasi antar-proses di Linux:Menggunakan pipa dan antrian pesan

  2. Mengurai riwayat Bash di Linux

  3. Dapatkan Subnet mask di Linux menggunakan bash

  1. Menggunakan pengubah kata dengan riwayat Bash di Linux

  2. Menggunakan Perintah Nama Dasar Linux di Skrip Bash

  3. Layanan OS Linux 'bernama'