Juste pour le plaisir:
existe-t-il un moyen de surveiller / capturer / vider tout ce qui est écrit /dev/null
?
Sur Debian ou FreeBSD, si cela est important, toute autre solution spécifique au système d'exploitation est également la bienvenue.
Juste pour le plaisir:
existe-t-il un moyen de surveiller / capturer / vider tout ce qui est écrit /dev/null
?
Sur Debian ou FreeBSD, si cela est important, toute autre solution spécifique au système d'exploitation est également la bienvenue.
/dev/null
s capturés pourrait révéler. Je ne voudrais pas faire la recherche moi-même, mais j'aimerais lire les résultats. (Il y aurait très probablement des problèmes éthiques à "regarder à travers les ordures des gens" essentiellement, mais le concept est néanmoins intéressant.)Réponses:
Faire
/dev/null
une pipe nommée est probablement le moyen le plus simple. Soyez averti que certains programmes (sshd
, par exemple) agiront anormalement ou ne s'exécuteront pas lorsqu'ils découvriront qu'il ne s'agit pas d'un fichier spécial (ou qu'ils peuvent lire à partir de/dev/null
, s'attendant à ce qu'il revienneEOF
).Cela devrait fonctionner sous toutes les distributions Linux et tous les BSD majeurs.
la source
tail
échec, alors beaucoup de programmes peuvent échouer parce que le tampon du canal est plein./dev/null
ne vont pas aimer ça.No magic
est un principe directeur dans la philosophie UNIX./dev/null
est magique,mknod /dev/null c 1 3
c'est la formule magique pour l'invoquer. (Et vous avez besoin de super-pouvoirs pour ça…)J'ai découvert une fois à la dure que / dev / null ne avoir à être un fichier dev spécial. Il y a longtemps, le / dev / null sur un système Ultrix au travail a été supprimé, donc la prochaine fois qu'un programme a été redirigé vers / dev / null, il s'est avéré être un fichier normal plein de la sortie de ce programme. (Je pense que ce n'était `` pas un tel fichier ou répertoire '', ce qui signifiait que lorsque nous essayions de comprendre ce qui se passait, nous le ferions
cat /dev/null
et on nous dirait ceno such file or directory
qui nous a déroutés.)Donc, ma suggestion serait de le remplacer par un tuyau nommé, puis d'attacher un programme au tuyau qui le lirait et le surveillerait.
la source
/dev/null
toujours retourner 0 octet sur un read (cat /dev/null > foo
). Le fait d'/dev/null
avoir un fichier régulier avec du contenu briserait cette attente.Je pense à une idée où / dev / null peut être un lien symbolique vers un descripteur de fichier mais avec un mécanisme d'ajout de code pour déterminer que l'opération est lue ou écrite, puis si elle est lue, elle devrait en fait être lue à partir de / dev / actualnull créée séparément avec mknod et s'il est en écriture, notez le programme appelant et essayez de vous connecter / compter pour analyser les programmes qui utilisent / dev / null pour l'écriture. Cela va coûter cher en termes de performances, je suppose cependant. Je suppose que ce n'est pas pratique car la plupart des programmes shell ou du code utilisent de toute façon la redirection. Peut être inotify pourrait être utilisé pour surveiller l'utilisation de / dev / null? ou réécrire le code du noyau qui gère les périphériques 1: 3, à nouveau compiler et réinstaller, expérimentable.
la source
/dev/null
partir d'un démon), et je me suissshd
toujours plaint et ne démarre pas.sshd
(au moins, comme emballé pour Debian Squeeze) se plaintsshd: cannot create /dev/null
si c'est autre chose que l'implémentation la plus courante.