ただ楽しみのために:
書き込まれているものを監視/キャプチャ/ダンプする方法はあり/dev/null
ますか?
DebianまたはFreeBSDでは、重要な場合、他のOS固有のソリューションも歓迎します。
/dev/null
sのコンテンツの分析がどうなるかを考えていたからです。私は自分で研究をしたくありませんが、結果を読みたいです。(本質的に「人々のゴミを覗く」ことにはいくつかの倫理的問題があるだろうが、それでもコンセプトは興味深い。)
ただ楽しみのために:
書き込まれているものを監視/キャプチャ/ダンプする方法はあり/dev/null
ますか?
DebianまたはFreeBSDでは、重要な場合、他のOS固有のソリューションも歓迎します。
/dev/null
sのコンテンツの分析がどうなるかを考えていたからです。私は自分で研究をしたくありませんが、結果を読みたいです。(本質的に「人々のゴミを覗く」ことにはいくつかの倫理的問題があるだろうが、それでもコンセプトは興味深い。)
回答:
/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 magic
UNIX哲学の指針です。
/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
ことの何が、最も一般的な実装であれば。