logo

Kas ir /Dev/Null operētājsistēmā Linux?

Ja esat mācījies čaulas programmēšanu, iespējams, jau esat saskāries ar kaut ko līdzīgu /dev/null. Šajā rakstā mēs sapratīsim, kas tas ir un kā tas tiek izmantots. Sāksim ar izpratni, kas ir /dev.

Kas ir /dev?

Linux failu sistēmā viss ir fails vai direktorijs. Pat ierīcēm tiek piekļūts kā faili. Jūsu cietā diska nodalījumi, pildspalvas disks, skaļruņi, tiem visiem ir fails, no kura tiem var piekļūt. Tagad, lai saprastu, kā ierīcēm tiek piekļūts kā faili, padomājiet par to šādi: ko mēs darām ar failu? Mēs nolasām datus no tā un ierakstām tajā datus. Ierīce, piemēram, skaļrunis, var ievadīt datus, lai radītu skaņu, cieto disku var izmantot datu lasīšanai un rakstīšanai, printeris izmanto ievadi, lai drukātu failus utt. Faili un ierīces šādā veidā ir līdzīgi.

/dev ir direktorijs, kurā tiek glabātas visas Linux sistēmas fiziskās un virtuālās ierīces. Fiziskās ierīces ir viegli saprotamas, tās ir taustāmas ierīces, piemēram, pildspalvas disks, skaļruņi, printeri utt. Linux sistēmā ir arī virtuālās ierīces, kas darbojas kā ierīce, bet neatspoguļo fizisku ierīci.



concat virknes java

Kas ir /dev/null?

Tā ir virtuāla ierīce, kurai ir īpašs īpašums: visi dati, kas ierakstīti /dev/null, pazūd vai pazūd. Šīs īpašības dēļ to sauc arī par bitbucket vai blackhole. Apskatīsim demonstrāciju.

Pārvirzīt izvadi uz /dev/null

Šajā demonstrācijā ir redzams, ka mēs pievienojām dažus datus, bet tie netika saglabāti. Šai īpašajai /dev/null īpašībai ir daži lietošanas gadījumi. Apskatīsim tos.

/dev/null izmantošana

Tā kā tas atmet visu, kas tajā rakstīts, varat pārvietot failus uz /dev/null, lai tos izdzēstu. Bet tas nav plaši izmantots gadījums. To galvenokārt izmanto, lai izvadītu standarta izvadi un standarta kļūdu.

Kas ir standarta izvade un standarta kļūda?

Linux komandas izvade satur divas datu plūsmas: standarta izvade (stdout) un standarta kļūda (stderr0), savukārt standarta izvade ir parastā izvade, ja komandai nav kļūdu, standarta kļūda ir komandas ģenerētā kļūda. Izvadē var būt gan standarta izvade, gan standarta ievade. Stdout un stderr piemērs:

Palaidīsim šādu čaulas skriptu

virkne java indexof
# /bin/sh ls apt update>

Pirmā komanda darbojās veiksmīgi, bet otrā radīja kļūdu. Tā kā stdout un stderr ir divas atsevišķas datu straumes, tās var apstrādāt atsevišķi.

Kā piekļūt stderr un stdout?

Stdout un stderr ir datu straumes, kuras abas tiek uzskatītas par failiem operētājsistēmā Linux. Ja vēlaties ar tiem veikt kādu darbību, izmantojiet faila deskriptoru, kas unikāli identificē faila straumi. Faila deskriptors stdout ir 1 un stderr ir 2.

Lai tiem piekļūtu atsevišķi, apskatīsim šo komandu, kas tiek izpildīta tajā pašā skripta failā, kas tika izmantots iepriekšējā piemērā.

./script.sh 1>stdout.txt>>   

Šeit jūs varat redzēt, ka izvadē ir standarta kļūdas, bet standarta izvade netika parādīta. Tas ir tāpēc, ka stdout straume tika nosūtīta uz failu stdout.txt, un jūs varat redzēt, ka failā stdout.txt ir standarta izvade.

Rakstot čaulas skriptu, iespējams, vēlēsities izvadīt standarta kļūdu. Neatkarīgi no tā, kādu straumi mēs vēlamies izslēgt no izvades, šo datu straumi var ierakstīt mapē /dev/null. Varat rakstīt šos datus citā failā, tāpat kā iepriekš minētajā piemērā, taču, ja jums tie nav izmantojami, kāpēc jūs vēlaties tērēt tiem atmiņu, labāk tos pilnībā izmest. Apskatīsim šādu piemēru

Un tieši tāpat mēs esam noņēmuši stderr no izvades. Ja vēlaties atmest visu izvadi, varat izmantot šo komandu

Komanda &> novirza faila deskriptora izvadi, kas ir minēts kreisajā pusē (iepriekš minētajā komandā, izvade no 2) uz faila deskriptora straumi, kas minēta labajā pusē. Tātad stderr (2) izvade tiek novirzīta uz stdout (1), kas savukārt tiek ierakstīta /dev/null un tādējādi tiek iznīcināta.

komplekti java

Droša failu dzēšana

“/dev/null” atrod lietderību drošai failu dzēšanai. Novirzot “/dev/null” uz failu, jūs varat efektīvi pārrakstīt tā saturu ar nulles baitiem, tādējādi apgrūtinot jebkādu nozīmīgu datu atkopšanu.

Piemēram:

Šī komanda aizvieto “sensitive_file” saturu ar nulles baitiem, nodrošinot tā drošu dzēšanu.

Žurnāla failu tīrīšana

Laika gaitā žurnālfaili var uzkrāt ievērojamus datus. Lai notīrītu žurnālfailus, nepārtraucot darbojošos pakalpojumus, varat novirzīt to saturu uz “/dev/null”.

Piemēram:

Šī komanda iztukšo “syslog” failu, novirzot tā saturu uz “/dev/null”, efektīvi iztīrot žurnālu, neizdzēšot pašu failu.

Padomi un triki:

  • Standarta izvades novirzīšana uz “/dev/null”: “command> /dev/null”
  • Standarta kļūdas novirzīšana uz “/dev/null”: “komanda 2> /dev/null”
  • Gan izvades, gan kļūdas novirzīšana uz “/dev/null”: “command>/dev/null 2>&1”

Secinājums

Šajā rakstā mēs runājām par '/dev/null' operētājsistēmā Linux, kas ir virtuāls melnais caurums, kurā dati pazūd, kad tajā tiek ierakstīti. To parasti izmanto, lai izmestu izvadi un kļūdas, padarot komandu izpildi tīrāku. To var izmantot arī drošai failu dzēšanai un žurnālfailu tīrīšanai. Izpratne par tā funkcionalitāti ļauj veikt efektīvas komandrindas darbības operētājsistēmā Linux.

java elseif