ただ楽しみのために:
書き込まれているものを監視/キャプチャ/ダンプする方法はあり/dev/nullますか?
DebianまたはFreeBSDでは、重要な場合、他のOS固有のソリューションも歓迎します。
/dev/nullsのコンテンツの分析がどうなるかを考えていたからです。私は自分で研究をしたくありませんが、結果を読みたいです。(本質的に「人々のゴミを覗く」ことにはいくつかの倫理的問題があるだろうが、それでもコンセプトは興味深い。)
ただ楽しみのために:
書き込まれているものを監視/キャプチャ/ダンプする方法はあり/dev/nullますか?
DebianまたはFreeBSDでは、重要な場合、他のOS固有のソリューションも歓迎します。
/dev/nullsのコンテンツの分析がどうなるかを考えていたからです。私は自分で研究をしたくありませんが、結果を読みたいです。(本質的に「人々のゴミを覗く」ことにはいくつかの倫理的問題があるだろうが、それでもコンセプトは興味深い。)
回答:
/dev/null名前付きパイプを作成するのがおそらく最も簡単な方法です。一部のプログラム(sshdなど)は、特殊なファイルではないことが判明した場合(または、が/dev/null返されることを期待して読み取りが行われる場合)に異常に動作したり、実行に失敗したりすることに注意してください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
これは、すべてのLinuxディストリビューション、およびすべての主要なBSDで機能するはずです。
tail失敗すると、パイプのバッファーがいっぱいであるため、多くのプログラムが失敗する可能性があることです。
/dev/nullこれを好まないでしょう。
No magicUNIX哲学の指針です。
/dev/null は魔法でmknod /dev/null c 1 3あり、それを呼び出す魔法の公式です。(そしてそのためには超大国が必要です…)
/ dev / nullが特別なdevファイルである必要がないという難しい方法を見つけました。ずいぶん前に、仕事中のUltrixシステムの/ dev / nullが削除されたため、次回プログラムが/ dev / nullにリダイレクトされたとき、そのプログラムからの出力で満たされた通常のファイルになりました。(私たちは何が起こっていたかを把握しようとしていたとき、私たちがやるだろうと意図され、それはそのようなファイルまたはディレクトリ」だったんだと思うcat /dev/nullと語ったことがno such file or directory、私たちの地獄を混同しています。)
したがって、名前付きパイプに置き換えてから、パイプを読み取り、監視するプログラムをアタッチすることをお勧めします。
/dev/nullは、読み取り時に常に0バイトを返すことに依存しています(cat /dev/null > foo)。た/dev/null内容で通常のファイルも、この期待を破ります。
/ dev / nullがファイル記述子へのシンボリックリンクになり得るが、操作が読み取りまたは書き込みであることを判別するコードメカニズムを追加し、それが読み取られた場合、実際に/ dev / actualnullから個別に作成されるアイデアを考えますmknodおよび書き込みの場合は、呼び出し元のプログラムを書き留め、書き込みに/ dev / nullを使用するプログラムを分析するためにログ/カウントを試みます。しかし、これはパフォーマンスの面でかなりの費用がかかりますが、私は思う。とにかくほとんどのシェルプログラムやコードはリダイレクトを使用するため、実用的ではないと思います。inotifyを使用して/ dev / nullの使用状況を監視できますか?または、1:3デバイスを処理するカーネルコードを書き直し、再度コンパイルして再インストールします。
/dev/nullデーモンからの制御を許可することで透過的に)、sshdまだ文句を言って起動しませんでした。
sshd(Debianのスクイーズためにパッケージとして、少なくとも、)と不平を言うsshd: cannot create /dev/nullことの何が、最も一般的な実装であれば。