/ Dev / null klasörüne gönderilen öğeyi izleyin?


19

Sadece eğlence için:
Yazılanları izlemenin / yakalamanın / dökmenin bir yolu var mı /dev/null?

Debian veya FreeBSD'de, önemliyse, işletim sistemine özgü diğer çözümler de kabul edilir.


3
Mümkün, ancak cevaplar ve yorumlar açıkladığı gibi / çok / çok iyi bir fikir değil.
Shadur

2
@Shadur: Kötü çözümler olabilir ama bu fikri ilgisiz ya da kötü bir fikir yapmaz.
jlliagre

1
Gerçekten de, bu soruyu yeni buldum çünkü yakalanan birçok /dev/nulls'nin içeriğinin bir analizinin nasıl ortaya çıkabileceğini düşünüyordum. Araştırmayı kendim yapmak istemem ama sonuçları okumak isterim. (Büyük olasılıkla "insanların
çöpüne

Yanıtlar:


12

Yapımı /dev/nulladlı bir kanal muhtemelen en kolay yoludur. Bazı programların ( sshdörneğin) özel bir dosya olmadığını (veya /dev/nullgeri dönmesini beklediklerini okuyabileceklerini) öğrendiklerinde anormal davranacağı veya yürütülemeyeceği konusunda uyarılmalıdır EOF.

# Remove special file, create FIFO and read from it
rm /dev/null && mkfifo -m622 /dev/null && tail -f /dev/null
# Remove FIFO, recreate special file
rm /dev/null && mknod -m666 /dev/null c 1 3

Bu, tüm Linux dağıtımları ve tüm büyük BSD'ler altında çalışmalıdır.


1
Dikkat edilmesi gereken bir şey, tailbaşarısız olursa, borunun tamponu dolu olduğu için birçok programın başarısız olabileceğidir.
Arcege

4
'Den okunan programlar bundan /dev/nullhoşlanmaz.
Gilles 'SO- kötü olmayı kes

@Gilles - Gerçekten, bu yüzden notum.
Chris Down

3
@Ali Evet. No magicUNIX felsefesinde yol gösterici bir ilkedir.
phihag

4
Ahem /dev/null olduğunu , sihirli mknod /dev/null c 1 3onu çağırmak için sihirli formüldür. (Ve bunun için süper güçlere ihtiyacınız var…)
Stéphane Gimenez

6

Bir keresinde / dev / null gelmez zor yoldan öğrendim sahip özel bir dev dosya olması. Çok uzun zaman önce işteki bir Ultrix sistemindeki / dev / null silindi, böylece bir program / dev / null'a yeniden yönlendirildiğinde, o programın çıktısıyla dolu normal bir dosya haline geldi. (Sanırım 'böyle bir dosya veya dizin yok' idi, bu da neler olup bittiğini anlamaya çalıştığımız zaman, yaptık cat /dev/nullve no such file or directoryhangisinin bizi şaşırttığı söylenirdi .)

Bu yüzden benim önerim onu ​​adlandırılmış bir boru ile değiştirmek ve daha sonra boruya okuyacak ve izleyecek bir program eklemek olacaktır.


4
Birçok program ayrıca /dev/nullbir read ( cat /dev/null > foo) öğesine her zaman 0 bayt döndürmeye dayanır . /dev/nullİçeriği olan düzenli bir dosya olması , bu beklentiyi kıracaktır.
Arcege

1
Evet, onu böyle keşfettik. Programlar herhangi bir girdi beklemiyordu ve bunlardan faydalanıyordu, artı / dev / dolduruluyordu.
Paul Tomblin

1

Ben / dev / null bir dosya tanımlayıcı için bir symlink olabilir ama işlem okumak veya yazmak belirlemek için kod mekanizması eklemek ile bir fikir düşünüyorum ve daha sonra okunduysa, aslında / dev / actualnull ayrı ayrı oluşturulan okumak gerekir mknod ve eğer yazılırsa, çağıran programı not edin ve yazmak için / dev / null kullanan programları analiz etmek üzere günlük / saymayı deneyin. Sanırım bu performans açısından çok pahalıya mal olacak. Çoğu kabuk programı veya kod yine de yeniden yönlendirme kullandığından pratik değil sanırım. İnotify olabilir / dev / null kullanımını izlemek için kullanılabilir? veya 1: 3 aygıtları işleyen çekirdek kodunu yeniden yazın, yeniden derleyin ve yeniden kurun.


2
Hala bazı problemler var, böyle bir şey yapmayı denedim (çekirdek içinde değil, başka bir dosyadan okumaya ve /dev/nullbir daemondan kontrol ederek şeffaf bir şekilde-ish ) ve sshdhala şikayet ettim ve başlamamıştım.
Chris Down

hmm..bir daemon'dan / dev / null kontrolüne ilgi duyuyorum. Çoğu programın / dev / null değerini / dev / null öğesinin önemini ve anlamını sisteme bırakarak başka bir dosya olarak kullanmak istediğini düşünüyorum.
Nikhil Mulley

Eh, sshd(Debian Squeeze için paketlenmiş olarak en azından) ile şikayet sshd: cannot create /dev/null's şey ama en yaygın uygulanması durumunda.
Chris Down
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.