Czy istnieje sposób na zastąpienie / dev / null rzeczywistym plikiem?

2

Czy istnieje sposób na zastąpienie /dev/null urządzenie z normalnym plikiem (lub urządzeniem, które może dołączać do pliku)? Ile danych jest na to zapisanych?

(To nieco dziwne pytanie jest częściowo inspirowane przez to ..)

dbr
źródło
4
Przepraszam, jeśli to brzmi głupio, a ktoś inny to rozumie, ale nie rozumiem, dlaczego ma tag „zielonego komputera”?
William Hilsum
1
Jest w połączonym artykule, rozwiązanie # 2. Trochę subtelne.
gbarry
5
Dlaczego nie po prostu odłączyć sieć od ściany i cat /dev/null > eth0 z luźnym końcem kabla w wiadrze na odpady. Następnie możesz łatwo zważyć wszystkie kawałki, które wypełniają go w zwykłej skali domowej ;-)
DaveParillo
@ Wil: To był żart bardziej niż cokolwiek innego c2.com/cgi/wiki?DevNull który był powiązany na końcu pytania ..
dbr

Odpowiedzi:

13

Zdecydowanie odradzam ... w zależności od systemu plik wynikowy może rosnąć naprawdę szybko. Jednak dobrze jest bawić się maszyną wirtualną.

Opiszę, jak to zrobić podczas jednej sesji, tzn. Wszystko powinno być z powrotem w taki sam sposób, jak po restarcie.

Oczywiście, należy to zrobić jako root.

Najpierw musisz usunąć bieżący / dev / null :

rm /dev/null

Następnie utwórz plik zastępczy o tej samej nazwie i odpowiednich uprawnieniach:

touch /dev/null
chmod 666 /dev/null

Możesz teraz wizualizować, co jest wysyłane / dev / null :

tail -f /dev/null

Wreszcie przywieźć / dev / null do jego normalnego zachowania:

rm /dev/null
mknod /dev/null c 1 3
chmod 666 /dev/null
avelldiroll
źródło
1

Możesz usunąć / dev / null i dotknąć go jako root, a następnie przywrócić jego uprawnienia.

Specjalne urządzenie zniknie i zamiast tego otrzymasz plik.

cieszyć się.

Tim Williscroft
źródło
1

W OpenBSD:

cd /dev
sudo mv null blah
sudo touch null
sudo chmod a+rwx null
echo foo > /dev/null

Niektóre linuxes AFAIK mają specjalne systemy plików urządzeń - devfs; udev - to może skomplikować tę prostą procedurę.

ayrnieu
źródło