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

/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.

Príkaz na vytvorenie:

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

/dev/null je zariadenie, do ktorého 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.

 

Napsat komentář

Your email address will not be published.

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