Hampir semua yang ada di Linux dapat dianggap sebagai file , tetapi perbedaan utama antara file biasa dan pipa bernama adalah bahwa pipa bernama adalah contoh khusus dari file yang tidak memiliki konten pada sistem file.
Berikut ini kutipan dari man fifo
:
File khusus FIFO (pipa bernama) mirip dengan pipa, kecuali itu diakses sebagai bagian dari sistem file. Ini dapat dibuka dengan berbagai proses untuk membaca atau menulis. Ketika proses bertukar data melalui FIFO, kernel meneruskan semua data secara internal tanpa menulisnya ke sistem file. Dengan demikian, file khusus FIFO tidak memiliki konten pada sistem file; entri sistem file hanya berfungsi sebagai titik referensi sehingga proses dapat mengakses pipa menggunakan nama dalam sistem file.
Kernel mempertahankan tepat satu objek pipa untuk setiap file khusus FIFO yang dibuka oleh setidaknya satu proses. FIFO harus dibuka pada kedua ujungnya (membaca dan menulis) sebelum data dapat dikirimkan. Biasanya, membuka blok FIFO sampai ujung yang lain dibuka juga.
Jadi sebenarnya pipa bernama tidak melakukan apa-apa sampai beberapa proses membaca dan menulis padanya. Tidak membutuhkan ruang pada hard disk (kecuali sedikit informasi meta), tidak menggunakan CPU.
Anda dapat memeriksanya dengan melakukan ini:
Buat pipa bernama
$ mkfifo /tmp/testpipe
Buka beberapa direktori, misalnya /home/user/Documents
, dan gzip semua yang ada di dalamnya, menggunakan pipa bernama.
$ cd /home/user/Documents
$ tar cvf - . | gzip > /tmp/testpipe &
[1] 28584
Di sini Anda akan melihat PID dari proses gzip. Dalam contoh kita adalah 28584.
Sekarang periksa apa yang dilakukan PID ini
$ ps u -P 28584
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
c0rp 28584 0.0 0.0 29276 7800 pts/8 S 00:08 0:00 bash
Anda akan melihat bahwa itu tidak menggunakan sumber daya . 0% penggunaan CPU, 0% penggunaan memori.
Verifikasi dugaan terkait penggunaan ruang file
$ du -h /tmp/testpipe
0 testpipe
Dan lagi 0
, tidak ada. Testpipe dapat digunakan lagi jika diperlukan.
Jangan lupa untuk membunuh gzip, gunakan kill -15 28584
. Dan menghapus pipa bernama kami menggunakanrm /tmp/testpipe
Contoh Penggunaan
Anda dapat mengarahkan ulang hampir semua menggunakan pipa bernama. Sebagai contoh, Anda dapat melihat proxy satu baris ini .
Juga di sini adalah satu lagi penjelasan bagus tentang penggunaan pipa bernama. Anda dapat mengkonfigurasi dua proses pada satu server untuk berkomunikasi menggunakan pipa bernama bukannya TCP / IP stack. Ini jauh lebih cepat, dan tidak memuat sumber daya jaringan. Misalnya Server Web Anda dapat berkomunikasi dengan database secara langsung menggunakan pipa bernama, daripada menggunakan localhost
alamat atau mendengarkan beberapa port.