logo

Co je /Dev/Null v Linuxu?

Pokud jste se učili programování shellu, možná jste již narazili na něco jako /dev/null. V tomto článku pochopíme, co to je a jak se používá. Začněme tím, že pochopíme, co je /dev.

linuxový soubor změny

Co je /dev?

V systému souborů Linux je vše soubor nebo adresář. Dokonce i zařízení jsou přístupná jako soubory. Oddíly vašeho pevného disku, Pen drive, reproduktory, pro všechny tyto existuje soubor, ze kterého se k nim přistupuje. Abyste nyní pochopili, jak se k zařízením přistupuje jako k souborům, představte si to takto: co se souborem uděláme? Data z něj čteme a data do něj zapisujeme. Zařízení, jako je reproduktor, může vkládat data k produkci zvuku, pevný disk lze použít ke čtení a zápisu dat, tiskárna přijímá vstup pro tisk souborů atd. Soubory a zařízení jsou si tímto způsobem podobná

/dev je adresář, ve kterém jsou uložena všechna fyzická a virtuální zařízení systému Linux. Fyzická zařízení jsou snadno pochopitelná, jsou to hmatatelná zařízení, jako jsou pero, reproduktory, tiskárny atd. Systém Linux má také virtuální zařízení, která fungují jako zařízení, ale nepředstavují žádné fyzické zařízení.



Co je /dev/null?

Je to virtuální zařízení, které má speciální vlastnost: Veškerá data zapsaná do /dev/null zmizí nebo zmizí. Kvůli této vlastnosti se také nazývá bitbucket nebo blackhole. Pojďme se podívat na demonstraci.

Přesměrujte výstup do /dev/null

V této ukázce můžete vidět, že jsme přidali nějaká data, ale ta data nebyla uložena. Tato konkrétní vlastnost /dev/null má několik případů použití. Pojďme se na ně podívat.

Použití /dev/null

Protože zahodí vše, co je do něj zapsáno, můžete soubory přesunout do /dev/null a odstranit je. Ale toto není široce používaný případ použití. Používá se hlavně k vyřazení standardního výstupu a standardní chyby z výstupu.

Co je standardní výstup a standardní chyba?

Výstup příkazu Linuxu obsahuje dva datové proudy: standardní výstup (stdout) a standardní chybu (stderr0), zatímco standardní výstup je normální výstup, pokud příkaz neobsahuje žádné chyby, standardní chyba je chyba generovaná příkazem. Výstup může obsahovat standardní výstup i standardní vstup. Příklad stdout a stderr:

Spustíme následující shell skript

# /bin/sh ls apt update>

První příkaz proběhl úspěšně, ale druhý vygeneroval chybu. Protože stdout a stderr jsou dva samostatné datové toky, lze s nimi pracovat samostatně.

Jak získat přístup ke stderr a stdout?

Stdout a stderr jsou datové proudy, s oběma se v Linuxu zachází jako se souborem. Chcete-li s nimi provést jakoukoli akci, použijte deskriptor souboru, který jednoznačně identifikuje proud souboru. Deskriptor souboru pro stdout je 1 a pro stderr je 2.

Chcete-li k nim přistupovat samostatně, podívejme se na následující příkaz, který se provádí na stejném souboru skriptu, který byl použit v předchozím příkladu.

./script.sh 1>stdout.txt>

Zde můžete vidět, že výstup obsahuje standardní chyby, ale standardní výstup nebyl zobrazen. Důvodem je, že proud stdout byl odeslán do souboru stdout.txt a můžete vidět, že soubor stdout.txt obsahuje standardní výstup.

Při psaní shell skriptu můžeme chtít z výstupu vypustit standardní chybu. Ať už chceme z výstupu potlačit jakýkoli proud, tento proud dat lze zapsat do /dev/null. Můžete zapsat tato data do jiného souboru, stejně jako výše uvedený příklad, ale pokud pro tato data nemáte využití, proč byste na ně chtěli plýtvat pamětí, je lepší je úplně zahodit. Podívejme se na následující příklad

./script.sh 2>/dev/null>

A právě tak jsme z výstupu odstranili stderr. Pokud chcete zrušit celý výstup, můžete použít následující příkaz

command>/dev/null 2>&1>

Příkaz &> přesměruje výstup deskriptoru souboru, který je zmíněn vlevo (ve výše uvedeném příkazu výstup 2) do proudu deskriptoru souboru uvedeného na pravé straně. Takže výstup stderr (2) je přesměrován na stdout(1), který se zase zapíše do /dev/null a tím se zničí.

třída java skeneru

Zabezpečené mazání souborů

„/dev/null“ najde nástroj pro bezpečné mazání souborů. Přesměrováním „/dev/null“ do souboru můžete efektivně přepsat jeho obsah prázdnými bajty, což ztěžuje obnovení jakýchkoli smysluplných dat.

Například:

cat /dev/null>citlivý_soubor>

Tento příkaz nahradí obsah „sensitive_file“ prázdnými bajty, čímž zajistí jeho bezpečné odstranění.

Čištění souborů protokolu

Soubory protokolu mohou časem nashromáždit podstatná data. Chcete-li vymazat soubory protokolu bez přerušení běžících služeb, můžete jejich obsah přesměrovat na „/dev/null“.

Například:

Tento příkaz vyprázdní soubor „syslog“ přesměrováním jeho obsahu na „/dev/null“, čímž efektivně vyčistí protokol, aniž by smazal samotný soubor.

zkuste chytit javu

Tipy a triky:

  • Přesměrování standardního výstupu na „/dev/null“: „příkaz> /dev/null“
  • Standardní chyba přesměrování na „/dev/null“: „příkaz 2> /dev/null“
  • Přesměrování výstupu i chyby na „/dev/null“: „příkaz>/dev/null 2>&1“

Závěr

V tomto článku jsme diskutovali o tom, že `/dev/null' v Linuxu je virtuální černá díra, kde data mizí, když se do ní zapisují. Běžně se používá k vyřazení výstupu a chyb, takže provádění příkazů je čistší. Může být také použit pro bezpečné mazání souborů a čištění souborů protokolu. Pochopení jeho funkčnosti umožňuje efektivní operace příkazového řádku v Linuxu.