Linux'taki hemen hemen her şey bir dosya olarak kabul edilebilir , ancak normal bir dosya ile adlandırılmış bir boru arasındaki temel fark , adlandırılmış bir borunun, dosya sistemi üzerinde hiçbir içeriğe sahip olmayan bir dosyanın özel bir örneği olmasıdır.
İşte alıntı man fifo
:
Bir FIFO özel dosyası (adlandırılmış bir boru), dosya sisteminin bir parçası olarak erişilmesi dışında, bir boruya benzer. Okuma veya yazma için birden fazla işlem tarafından açılabilir. İşlemler FIFO aracılığıyla veri alışverişinde bulunduğunda, çekirdek tüm verileri dosya sistemine yazmadan dahili olarak geçirir. Bu nedenle, FIFO özel dosyasının dosya sistemi üzerinde hiçbir içeriği yoktur; dosya sistemi girişi yalnızca referans noktası olarak işlev görür, böylece işlemler dosya sistemindeki bir adı kullanarak boruya erişebilir.
Çekirdek, en az bir işlem tarafından açılan her bir FIFO özel dosyası için tam olarak bir boru nesnesi tutar. Veri aktarılmadan önce FIFO her iki ucundan da açılmalıdır (okuma ve yazma). Normalde, FIFO bloklarının diğer ucu açılıncaya kadar açılması.
Yani aslında adlandırılmış bir boru, bazı işlemler okuyana ve yazana kadar hiçbir şey yapmaz. Sabit diskte yer kaplamaz (biraz meta bilgisi hariç), CPU kullanmaz.
Bunu yaparak kontrol edebilirsiniz:
Adlandırılmış bir boru oluştur
$ mkfifo /tmp/testpipe
Örneğin /home/user/Documents
, bir dizine gidin ve içindeki her şeyi gzip ile adlandırılmış yöneltin.
$ cd /home/user/Documents
$ tar cvf - . | gzip > /tmp/testpipe &
[1] 28584
Burada gzip işleminin PID'sini görmelisiniz. Örneğimizde bu 28584 oldu.
Şimdi bu PID'nin ne yaptığını kontrol et
$ 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
Hiçbir kaynak kullanmadığını göreceksiniz . % 0 CPU kullanımı,% 0 hafıza kullanımı.
Dosya alanı kullanımıyla ilgili bir ipucu olduğunu doğrulayın
$ du -h /tmp/testpipe
0 testpipe
Ve yine 0
, hiçbir şey. Gerekirse test borusu tekrar kullanılabilir.
Kullanarak gzip'i öldürmeyi unutma kill -15 28584
. Ve bizim adlandırılmış yöneltme kullanarak bizimrm /tmp/testpipe
Örnek Kullanımlar
Adlandırılmış yöneltme kullanarak hemen hemen her şeyi yönlendirebilirsiniz. Örnek olarak, bu tek hat vekilini görebilirsiniz .
Ayrıca burada adlandırılmış boru kullanımının bir güzel açıklaması. TCP / IP yığını yerine adlandırılmış bir kanal kullanarak iletişim kurmak için bir sunucudaki iki işlemi yapılandırabilirsiniz. Çok daha hızlı ve ağ kaynaklarını yüklemiyor. Örneğin, Web Sunucunuz, localhost
adres kullanmak veya bir bağlantı noktasını dinlemek yerine doğrudan adlandırılmış bir kanal kullanarak veritabanıyla doğrudan iletişim kurabilir .