Mkfifo: cara kerja
mkfifo adalah singkatan dari make first-in-first-out. Ini adalah perintah di sistem operasi berbasis Unix seperti Ubuntu yang digunakan untuk membuat sebuah *named pipe* atau pipa bernama. Pipanya sendiri adalah sebuah mekanisme komunikasi antar proses (inter-process communication) yang memungkinkan satu proses menulis data ke dalam pipa dan proses lainnya membaca data tersebut.
Perbedaan `mkfifo` dengan pipa biasa:
- Pipa biasa: Dibuat secara dinamis saat dua proses berkomunikasi dan hilang ketika komunikasi selesai.
- Named pipe: Dibuat secara permanen dalam sistem file, sehingga proses yang berbeda dapat mengaksesnya kapan saja selama pipa tersebut ada.
Mengapa Menggunakan `mkfifo`?=
- Komunikasi antar proses: Ideal untuk menghubungkan dua atau lebih program yang berjalan secara independen.
- Sinkronisasi: Dapat digunakan untuk mensinkronkan aktivitas antara proses.
- Pemrosesan data secara bertahap: Data dapat ditulis dan dibaca secara bertahap, sehingga memungkinkan pemrosesan data yang lebih efisien.
Cara Menggunakan `mkfifo`
Membuat named pipe:
mkfifo nama_pipa
Contoh:
mkfifo mypipe
Perintah di atas akan membuat sebuah named pipe dengan nama `mypipe` di direktori saat ini.
Mengakses named pipe:
- Membaca dari named pipe:
cat < nama_pipa
- Menulis ke named pipe:
echo "Hello" > nama_pipa
Contoh penggunaan:
Misalkan kita memiliki dua skrip:
- Skrip 1 (penulis):
#!/bin/bash while true; do echo "Data dari skrip 1" > mypipe sleep 1 done
- Skrip 2 (pembaca):
#!/bin/bash while true; do read line < mypipe echo "Data yang diterima: $line" done
Skrip 1 akan terus menulis data ke `mypipe` setiap detik, sedangkan skrip 2 akan terus membaca data dari `mypipe` dan menampilkannya ke layar.
Opsi Tambahan `mkfifo`
- `-m mode`: Mengatur izin akses (permission) pada named pipe.
- `-Z context`: Mengatur konteks keamanan SELinux pada named pipe.
Contoh Penggunaan dalam Skenario Nyata
- Transfer data antara dua program: Misalnya, mengalihkan output dari satu program ke input program lainnya.
- Implementasi antrian sederhana: Data yang ditulis ke named pipe akan diproses secara berurutan oleh proses pembaca.
- Komunikasi antara proses induk dan anak: Proses anak dapat membaca perintah dari proses induk melalui named pipe.
Kesimpulan
mkfifo adalah alat yang sangat berguna untuk membangun sistem yang lebih kompleks dan efisien di Ubuntu Server. Dengan memahami cara kerjanya, Anda dapat memanfaatkannya untuk berbagai keperluan, mulai dari komunikasi antar proses hingga implementasi mekanisme sinkronisasi.