Hvordan bruke stat-kommandoen på Linux

En Linux-terminal på et skrivebord i Ubuntu-stil.

Fatmawati Achmad Zaenuri/Shutterstock.com



Linux |_+_| kommandoen viser deg mye mer detaljer enn |_+_| gjør. Ta en titt bak gardinen med dette informative og konfigurerbare verktøyet. Vi viser deg hvordan du bruker den.

stat tar deg bak kulissene

Den |_+_| kommandoen er god på hva den gjør – og den gjør mye – men med Linux ser det ut til at det alltid er en måte å gå dypere og se hva som ligger under overflaten. Og ofte er det ikke bare et tilfelle av å løfte kanten av teppet. Du kan rive opp gulvbordene og deretter grave et hull. Du kan skrelle Linux som en løk.





10 grunnleggende Linux-kommandoer for nybegynnere I SLEKT 10 grunnleggende Linux-kommandoer for nybegynnere

|_+_| vil vise deg mye informasjon om en fil, for eksempel hvilke tillatelser som er satt på den, og hvor stor den er, og enten det er en fil eller en symbolsk lenke . For å vise denne informasjonen |_+_| leser det fra en filsystemstruktur kalt en inode .

Hver fil og katalog har en inode. Inoden holder metadata om filen , for eksempel hvilke filsystemblokker den opptar, og datostemplene knyttet til filen. Inoden er som et lånekort for filen. Men |_+_| vil bare vise deg noe av informasjonen. For å se alt, må vi bruke |_+_| kommando.



Lik |_+_| , den |_+_| kommandoen har mange alternativer. Dette gjør den til en god kandidat for bruk av aliaser. Når du har oppdaget et bestemt sett med alternativer som gjør |_+_| gi deg utgangen du ønsker, pakk den inn i et alias eller skallfunksjon . Dette gjør det mye mer praktisk å bruke, og du trenger ikke å huske et mystisk sett med kommandolinjealternativer.

I SLEKT: Hvordan bruke ls-kommandoen til å liste filer og kataloger på Linux

En rask sammenligning

La oss bruke |_+_| for å gi oss en lang liste (alternativet |_+_|) med filstørrelser som kan leses av mennesker (alternativet |_+_|):



stat

Annonse

Fra venstre til høyre er informasjonen som ls gir:

  • Det aller første tegnet er en bindestrek - og dette forteller oss at filen er en vanlig fil og ikke en socket, symbolkobling eller en annen type objekt.
  • Eieren, gruppen og andre tillatelser er oppført i oktalt format .
  • Antallet harde lenker som peker til denne filen. I dette tilfellet, og i de fleste tilfeller, vil det være en.
  • Fileieren er dave.
  • Gruppeeieren er dave.
  • Filstørrelsen er 802 byte.
  • Filen ble sist endret fredag ​​13. desember 2015.
  • Filnavnet er |_+_|.

La oss ta en titt med |_+_| :

ls

Informasjonen vi får fra |_+_| er:

    Fil: Navnet på filen. Vanligvis er det det samme som navnet vi ga til |_+_| på kommandolinjen, men det kan være annerledes hvis vi ser på en symbolsk lenke. Størrelse: Størrelsen på filen i byte. Blokker: Antall filsystemblokker filen krever, for å kunne lagres på harddisken. IO-blokk: Størrelsen på en filsystemblokk. Filtype: Type objekt metadataene beskriver. De vanligste typene er filer og kataloger, men de kan også være lenker, sockets eller navngitte rør. Enhet: Enhetsnummeret i heksadesimal og desimal. Dette er ID-en til harddisken filen er lagret på. Inode: Inodenummeret. Det vil si ID-nummeret til denne inoden. Sammen identifiserer inodenummeret og enhetsnummeret en fil unikt. Lenker: Dette tallet angir hvor mange harde lenker som peker til denne filen. Hver hard link har sin egen inode. Så en annen måte å tenke på denne figuren på er hvor mange inoder som peker til denne filen. Hver gang en hard link opprettes eller slettes, vil dette tallet bli justert opp eller ned. Når den når null, er selve filen slettet, og inoden fjernes. Hvis du bruker |_+_| på en katalog representerer dette nummeret antall filer i katalogen, inkludert . oppføring for gjeldende katalog og .. oppføring for overordnet katalog. Adgang: Filtillatelsene vises i deres oktale og tradisjonelle |_+_| (lese, skrive, kjøre formater). Uid: Bruker-ID og kontonavn til eieren. Guide: Gruppe-ID og kontonavn til eieren. Adgang: Tidsstempelet for tilgang. Ikke så enkelt som det kan virke. Moderne Linux-distribusjoner bruker et opplegg kalt |_+_|, som prøver å optimalisere harddiskskrivingene som kreves for å oppdatere tilgangstiden . Enkelt sagt oppdateres tilgangstiden hvis den er eldre enn den endrede tiden. Endre: Tidsstempelet for endring. Dette er tiden da filen er innhold ble sist endret. (Som flaksen ville ha det, ble innholdet i denne filen sist endret for fire år siden til i dag.) Endring: Endre tidsstemplet. Dette er tiden filens egenskaper eller innhold ble sist endret. Hvis du endrer en fil ved å angi nye filtillatelser, vil endringstidsstempelet bli oppdatert (fordi filen egenskaper har endret seg), men det endrede tidsstemplet vil ikke bli oppdatert (fordi filen innhold ble ikke endret). Fødsel: Reservert for å vise den opprinnelige opprettelsesdatoen for filen, men dette er ikke implementert i Linux.

Forstå tidsstemplene

Tidsstemplene er tidssonesensitive. Den |_+_| på slutten av hver linje viser at denne filen ble opprettet på en datamaskin i en Koordinert universell tid (UTC) tidssone som er fem timer foran tidssonen til gjeldende datamaskin. Så denne datamaskinen er fem timer bak datamaskinen som opprettet denne filen. Faktisk ble filen opprettet på en britisk tidssonedatamaskin, og vi ser på den her på en datamaskin i US Eastern Standard-tidssonen.

Endre og endre tidsstemplene kan forårsake forvirring fordi navnene deres høres ut som om de betyr det samme for de uinnvidde.

La oss bruke |_+_| for å endre filtillatelsene på en fil kalt |_+_|. Vi skal gjøre det skrivbart for alle. Dette vil ikke påvirke innholdet i filen, men det vil påvirke attributtene til filen.

ls

Og så bruker vi |_+_| for å se på tidsstemplene:

ls

Annonse

Tidsstempelet for endring er oppdatert, men det endrede har ikke blitt det.

De modifisert tidsstempelet vil bare bli oppdatert hvis innholdet i filen endres. De endring tidsstempelet oppdateres for både innholdsendringer og attributtendringer.

Bruke Stat med flere filer

For å få statistisk rapport om flere filer samtidig, send filnavnene til |_+_| på kommandolinjen:

ls

For å bruke |_+_| på et sett med filer, bruk mønstertilpasning. Spørsmålstegnet? representerer et enkelt tegn, og stjernen * representerer en hvilken som helst streng med tegn. Vi kan fortelle |_+_| å rapportere om hvilken som helst fil kalt ana med en enkeltbokstavsutvidelse, med denne kommandoen:

ls

Bruke stat for å rapportere om filsystemer

|_+_| kan rapportere om status for filsystemer, samt status for filer. Den |_+_| (filsystem)-alternativet forteller |_+_| å rapportere om filsystemet som filen ligger på. Merk at vi også kan sende en katalog som / til |_+_| i stedet for et filnavn.

stat

Informasjonen |_+_| gir oss er:

    Fil: Navnet på filen. ID: Filsystem-IDen i heksadesimal notasjon. Namelen: Maksimal tillatt lengde for filnavn. Type: Type filsystem. Blokkstørrelse: Mengden data for å be om leseforespørsler for optimale dataoverføringshastigheter. Grunnleggende blokkstørrelse: Størrelsen på hver filsystemblokk.

Blokker:

    Total: Totalt antall blokker i filsystemet. Gratis: Antall ledige blokker i filsystemet. Tilgjengelig: Antall gratis blokker tilgjengelig for vanlige (ikke-root) brukere.

Inoder:

    Total: Totalt antall inoder i filsystemet. Gratis: Antall ledige inoder i filsystemet.

Se bort fra symbolske lenker

Hvis du bruker |_+_| på en fil som faktisk er en symbolsk lenke, vil den rapportere om lenken. Hvis du ville |_+_| for å rapportere om filen som koblingen peker til, bruk |_+_| (hensiktsmessig) alternativ. Filen |_+_| er en symbolsk lenke til |_+_| . La oss se på det uten |_+_| alternativ:

ls

Annonse

Filnavnet viser |_+_| peker på ( |_+_| ) |_+_|. Filstørrelsen er bare 11 byte. Det er null blokker viet til å lagre denne koblingen. Filtypen er oppført som en symbolsk lenke.

Det er klart at vi ikke ser på den faktiske filen her. La oss gjøre det igjen og legge til |_+_| alternativ:

stat

Dette viser nå fildetaljene for filen som den symbolske lenken viser til. Men merk at filnavnet fortsatt er gitt som |_+_|. Dette er navnet på lenken, ikke målfilen. Dette skjer fordi dette er navnet vi ga til |_+_| på kommandolinjen.

Terse-rapporten

Den |_+_| (terse) alternativet forårsaker |_+_| for å gi et sammendrag:

stat

Det er ingen ledetråder gitt. For å gi mening – inntil du har husket feltsekvensen – må du kryssreferanser denne utgangen til en fullstendig |_+_| produksjon.

Egendefinerte utdataformater

En bedre måte å få et annet sett med data fra |_+_| er å bruke et tilpasset format. Det er en lang liste over tokens kalt formatsekvenser. Hver av disse representerer et dataelement. Velg de du vil ha inkludert i utdataene og lag en formatstreng. Når vi ringer |_+_| og sende formatstrengen til den, vil utdataene bare inkludere dataelementene vi ba om.

Annonse

Det finnes forskjellige sett med formatsekvenser for filer og filsystemer. Listen for filer er:

    %til: Tilgangsrettighetene i oktal. %TIL: Tilgangsrettighetene i lesbar form (|_+_|). % b: Antall blokker tildelt. % B: Størrelsen i byte for hver blokk. %d: Enhetsnummeret i desimal. %D: Enhetsnummeret i hex. %f: Råmodusen i hex. %FFiltypen. %g: Gruppe-IDen til eieren. %G: Gruppenavnet til eieren. %h: Antall harde lenker. %Jeg: Inodenummeret. %m: Monteringspunktet. %n: Filnavnet. %N: Det siterte filnavnet, med dereferert filnavn hvis det er en symbolsk lenke. %eller: Tips for optimal I/O-overføringsstørrelse. %s: Den totale størrelsen, i byte. %t: Hovedenhetstypen i hex, for spesialfiler for tegn/blokkenheter. %T: Den mindre enhetstypen i hex, for spesialfiler for tegn/blokkenheter. % u: Bruker-IDen til eieren. % U: Brukernavnet til eieren. %I: Tidspunktet for filens fødsel, lesbar av mennesker, eller en bindestrek - hvis ukjent. %I: Tidspunktet for filens fødsel, sekunder siden epoken; 0 hvis ukjent. % x: Tidspunktet for siste tilgang, lesbar for mennesker. % X: Tidspunktet for siste tilgang, sekunder siden epoken. %Y: Tidspunktet for siste dataendring, lesbar for mennesker. %Y: Tiden for siste dataendring, sekunder siden epoken. %med: Tidspunktet for siste statusendring, lesbar for mennesker. %MED: Tidspunktet for siste statusendring, sekunder siden epoken.

Epoken er Unix-epoken , som fant sted 1970-01-01 00:00:00 +0000 (UTC).

For filsystemer er formatsekvensene:

    %til: Antall gratis blokker tilgjengelig for vanlige (ikke-root) brukere. % b: De totale datablokkene i filsystemet. % c: Totalt antall inoder i filsystemet. %d: Antall ledige inoder i filsystemet. %f: Antall ledige blokker i filsystemet. %Jeg: Filsystem-IDen i heksadesimal. %L: Maksimal lengde på filnavn. %n: Filnavnet. %s: Blokkstørrelsen (optimal skrivestørrelse). %S: Størrelsen på filsystemblokker (for blokkantall). %t: Filsystemtypen er heksadesimal. %T: filsystemtype i lesbar form.

Det er to alternativer som godtar strenger med formatsekvenser. Disse er |_+_| og |_+_|. Forskjellen mellom dem er |_+_| tolker C-stil rømningssekvenser som nylinje |_+_| og fanen |_+_| , og det legger ikke automatisk til et linjeskifttegn i utdataene.

La oss lage en formatstreng og sende den til |_+_|. Formatsekvensene som skulle brukes er |_+_| for filnavn, |_+_| for størrelsen på filen og |_+_| for filtypen. Vi skal legge til |_+_| escape-sekvensen til slutten av strengen for å sikre at hver fil håndteres på en ny linje. Formatstrengen vår ser slik ut:

ls

Vi skal sende dette til |_+_| ved å bruke |_+_| alternativ. Vi kommer til å spørre |_+_| å rapportere om en fil kalt |_+_| og et sett med filer som samsvarer med |_+_|. Dette er hele kommandoen. Legg merke til likhetstegnet |_+_| mellom |_+_| og formatstrengen:

-l

Rapporten for hver fil er oppført på en ny linje, som er det vi ba om. Filnavnet, filstørrelsen og filtypen er gitt for oss.

Annonse

Egendefinerte formater gir deg tilgang til enda flere dataelementer enn det som er inkludert i standarden |_+_| produksjon.

Finkornkontroll

Som du kan se, er det et enormt omfang for å trekke ut de spesielle dataelementene som er av interesse for deg. Du kan sikkert også se hvorfor vi anbefalte å bruke aliaser for lengre og mer komplekse besvergelser.

Linux-kommandoer
Filer tjære · pv · katt · tac · chmod · grep · diff · sed · Med · Mann · pushd · popd · fsck · testdisk · seq · fd · pandoc · CD · $PATH · awk · bli med · jq · brette · unik · journalctl · hale · stat · ls · fstab · kastet ut · mindre · chgrp · chown · rev · se · strenger · type · endre navn · glidelås · pakke opp · montere · umount · installere · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · fra · ln · lapp · konvertere · rclone · makulere · SRM
Prosesser alias · skjerm · topp · hyggelig · renice · framgang · strace · system · tmux · chsh · historie · · parti · gratis · hvilken · dmesg · brukermod · ps · chroot · xargs · tty · rosa · lsof · vmstat · pause · vegg · ja · drepe · søvn · sudo · hans · tid · gruppeadd · brukermod · grupper · lshw · skru av · starte på nytt · Stoppe · strøm av · passwd · lscpu · crontab · Dato · bg · fg
Nettverk netstat · ping · traceroute · ip · ss · hvem er · fail2ban · bmon · du · finger · nmap · ftp · krølle · wget · hvem · hvem er jeg · I · iptables · ssh-keygen · ufw

I SLEKT: Beste Linux bærbare datamaskiner for utviklere og entusiaster

LES NESTE Profilbilde for Dave McKay Dave McKay
Dave McKay brukte først datamaskiner da stanset papirtape var på moten, og han har programmert siden. Etter over 30 år i IT-bransjen er han nå teknologijournalist på heltid. I løpet av sin karriere har han jobbet som frilansprogrammerer, leder for et internasjonalt programvareutviklingsteam, prosjektleder for IT-tjenester og sist som databeskyttelsesansvarlig. Hans forfatterskap har blitt publisert av howtogeek.com, cloudsavvyit.com, itenterpriser.com og opensource.com. Dave er en Linux-evangelist og forkjemper for åpen kildekode.
Les hele bio

Interessante Artikler