«

»

Led 11

Pozor! Čierna diera!

V článku „Je libo náhodička?“ sme si predstavili dve pseudozariadenia slúžiace na generovanie náhodných dát. V tomto sa budem venovať ďalším dvom:

 

 

  • /dev/zero
  • /dev/null

 

/dev/full

/dev/full je zariadenie, ktoré pri pokuse o zápis vyhodí chybovú hlášku ENOSPC. Pri čítaní poskytuje nekonečné množstvo núl. Podobne ako /dev/zero. Používa sa na testovanie správania sa disku či programu pri nedostatku miesta. Uvádzam ho iba pre úplnosť.

$ echo „Hello world“ > /dev/full

bash: echo: chyba zapisovania: Na zariadení už nie je žiadne miesto

 

/dev/zero

Je pseudozariadenie, do ktorého sa dá zapísať neobmedzené množstvo dát. Pri čítaní vykazuje obsah v podobe veľkého množstva nulových bajtov (ASCII NUL, 0x00; znak s kódom nula; prvý znak v ASCII). Spätná analýza je možná, ale nesmierne zložitá. A to pomocou od (nástroja, ktorý súbory vypíše v osmičkovej sústave alebo v stanovenom formáte) alebo nejakého hex editora. Používa sa ukladanie znakov určených na inicializáciu ukladania znakov, na vytvorenie iniciálnych fiktívnych súbor s vopred stanovenou dĺžkou, slúžiace ako swap. Môže byť použitý aj ako zdroj údajov, nielen ako ich bezodný kôš. Napríklad, keď sa použije na mapovanie virtuálnej pamäte pomocou mmap, vznikne tak ekvivalent ku anonymnej pamäte, to znamená pamäte, ktorá nie je pripojená ku žiadnemu súboru.

 

Dá sa vytvoriť pomocou tohto príkazu:

mknod -m 666 /dev/zero c 1 5

 

Príklady využitia:

alokovanie pamäte:

p = mmap(0, size, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);

alokovanie pamäte:

int fd = open(„/dev/zero“, O_RDWR);

p = mmap(0, size, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0);

close(fd);

nízkoúrovňové formátovanie:

dd if=/dev/zero of=/dev/sda

vytvorenie súboru s názvom foobar:

dd if=/dev/zero of=foobar count=1024 bs=1024

 

vytvorenie swapu (s použitím sudo):

dd if=/dev/zero of=/swapfile bs=1024 count=256k

mkswap /swapfile

swapon /swapfile

echo „/swapfile swap swap auto 0 0“ | sudo tee -a /etc/fstab

sudo sysctl -w vm.swappiness=10 echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf

chown root:root /swapfile

chmod 0600 /swapfile

top

 

/dev/null

Do tohto zariadenia sa dá zapísať neobmedzené množstvo dát. Tie v ňom nenávratne zmiznú. Po skončení zápisu ohlási, že zápis skončil úspešne. Pri pokuse o čítanie vráti chybovú hlášku EOF (end-of-file), ktorá sa používa na označenie konca súboru za posledným platným znakom. Najčastejšie sa používa na odstránenie nežiadúcich výstupov procesu či aktivity, alebo ako prázdny súbor pre vstup procesov. Slangovo sa nazýva aj ako čierna diera. /dev/null nie je zariadenie v pravom slova zmysle. Ide o špeciálny súbor. Preto príkaz mv (premiestnenie) nebude fungovať.

 

Príkaz na vytvorenie:

mknod -m 666 /dev/null c 1 3

 

Príklady využitia:

skript na čistenie logov vo /var/log:

# Upratovanie

# Spusti ako root.

cd /var/log

cat /dev/null > messages

cat /dev/null > wtmp

echo „Upratovanie logov ukončené.“

 

skript na na zakrytie cookies:

# Zastaraný prehliadač.

# Rovnaký spôsob sa dá použit aj pri novších verziách.

if [ -f ~/.config/chromium/Default ] # V prípade existencie ich odstráni.

then

rm -f ~/.config/chromium/Default

fi

ln -s /dev/null ~/.config/chromium/Default

# Všetky cookies treba poslať do čiernej diery.

vymazanie súboru:

cat /dev/null > subornaodstranenie.txt

dd if=/dev/null of= subornaodstranenie

dd if=/dev/null > subornaodstranenie

 

ak pri hľadaní nechcete vidieť chybové hlášky:

find / -type f -name ‚*lombardo1981*‘ 2>/dev/null

 

odstránenie „neželaných“ výstupov pri hľadaní užívateľa lombardo1981:

grep lombardo1981 /etc/passwd && echo „lombardo1981 nájdený“ || „lombardo1981 nenájdený“

lombardo1981 nenájdený: command not found

lombardo1981:x:1000:1000:lombardo1981,,,:/home/lombardo1981:/bin/bash

lombardo1981 nájdený
grep lombardo1981 /etc/passwd >/dev/null && echo „lombardo1981 nájdený“ || „lombardo1981 nenájdený“

lombardo1981 nenájdený: command not found

lombardo1981 nájdený

 

Porovnanie /dev/zero a /dev/null:

 

Napríklad v roku 2011 Linus Åkesson pomocou /dev/null, /dev/zero a rúry simuloval logické obvody.

O autorovi

lombardo1981

Ja som proste ja. Baba zamilovaná do Archu, kyberpunku, metalu, spevu a Slovenských čuvačov.

Napsat komentář

%d blogerům se to líbí: