Hanya untuk bersenang-senang:
Apakah ada cara untuk memantau / menangkap / membuang apa pun yang sedang ditulis /dev/null
?
Pada Debian, atau FreeBSD, jika itu penting, solusi spesifik OS lainnya juga diterima.
Hanya untuk bersenang-senang:
Apakah ada cara untuk memantau / menangkap / membuang apa pun yang sedang ditulis /dev/null
?
Pada Debian, atau FreeBSD, jika itu penting, solusi spesifik OS lainnya juga diterima.
/dev/null
. Saya tidak ingin melakukan penelitian sendiri, tetapi saya ingin membaca hasilnya. (Kemungkinan besar akan ada beberapa masalah etika dalam "melihat melalui sampah orang" pada dasarnya, tetapi konsepnya tetap menarik.)Jawaban:
Membuat
/dev/null
pipa bernama mungkin cara termudah. Berhati-hatilah karena beberapa program (sshd
, misalnya) akan bertindak tidak normal atau gagal dijalankan ketika mereka mengetahui bahwa itu bukan file khusus (atau mereka dapat membacanya/dev/null
, mengharapkannya kembaliEOF
).Ini harus bekerja di bawah semua distribusi Linux, dan semua BSD utama.
sumber
tail
gagal, maka banyak program mungkin gagal karena buffer pipa penuh./dev/null
tidak akan suka ini.No magic
adalah prinsip panduan dalam filosofi UNIX./dev/null
adalah sihir,mknod /dev/null c 1 3
adalah formula ajaib untuk memohonnya. (Dan Anda membutuhkan kekuatan super untuk itu ...)Saya pernah menemukan cara yang sulit bahwa / dev / null tidak harus menjadi file dev khusus. Beberapa waktu yang lalu / dev / null pada sistem Ultrix di tempat kerja dihapus, sehingga pada saat berikutnya sebuah program dialihkan ke / dev / null, akhirnya menjadi file normal yang penuh dengan output dari program itu. (Saya pikir itu 'tidak ada file atau direktori', yang berarti ketika kami mencoba untuk mencari tahu apa yang sedang terjadi, kami akan melakukan
cat /dev/null
dan diberitahuno such file or directory
yang membingungkan kami.)Jadi saran saya adalah menggantinya dengan pipa bernama, dan kemudian melampirkan program ke pipa yang akan membacanya dan memonitornya.
sumber
/dev/null
selalu mengembalikan 0 byte pada read (cat /dev/null > foo
). Memiliki/dev/null
file biasa dengan konten, akan mematahkan harapan ini.Saya memikirkan sebuah ide di mana / dev / null dapat menjadi symlink ke deskriptor file tetapi dengan menambahkan mekanisme kode untuk menentukan operasi membaca atau menulis dan kemudian jika dibaca, sebenarnya harus membaca dari / dev / actualnull yang dibuat secara terpisah dengan mknod dan jika ditulis maka buat catatan tentang program pemanggilan dan coba log / hitung untuk menganalisis program yang menggunakan / dev / null untuk menulis. Ini akan menghabiskan banyak biaya dalam hal kinerja, saya kira. Saya kira itu tidak praktis karena sebagian besar program shell atau kode tetap menggunakan pengalihan. Mungkin tidak dapat digunakan untuk memantau penggunaan / dev / null? atau menulis ulang kode kernel yang menangani perangkat 1: 3, lagi kompilasi dan instal ulang, dapat dicoba.
sumber
/dev/null
dari daemon), dansshd
masih mengeluh dan tidak mau memulai.sshd
(setidaknya, seperti yang dikemas untuk Debian Squeeze) mengeluhsshd: cannot create /dev/null
jika itu adalah implementasi yang paling umum.