Како користити команду стат на Линуку

Команда Линук стат вам показује много више детаља него лс. Завирите иза завесе помоћу овог информативног услужног програма који се може конфигурисати. Показаћемо вам како да га користите.

стат води вас иза кулиса

Команда лс је одлична у ономе што ради — и ради много тога — али са Линуком, чини се да увек постоји начин да се иде дубље и види шта се крије испод површине. И често, то није само случај подизања ивице тепиха. Можете поцепати подне даске и онда ископати рупу. Можете огулити Линук као лук.

лс ће вам показати доста информација о датотеци, као што су дозволе које су за њу постављене и колико је велика и да ли је датотека или симболичка веза. Да би приказао ове информације, лс их чита из а структуру система датотека која се зове иноде.

Сваки фајл и директоријум има иноде. Иноде држи метаподаци о датотеци, као што су блокови система датотека које заузима, и ознаке датума повезане са датотеком. Иноде је као библиотечка картица за датотеку. Али лс ће вам показати само неке од информација. Да бисмо све видели, треба да користимо команду стат.

Као и лс , команда стат има много опција. То га чини одличним кандидатом за употребу алијаса. Када откријете одређени скуп опција које чине да вам стат даје жељени резултат, умотајте га у псеудоним или функцију љуске. Ово га чини много практичнијим за коришћење и не морате да памтите тајанствени скуп опција командне линије.

Брзо поређење

Хајде да користимо лс да нам дамо дугачку листу (опција -л) са величинама фајлова читљивих људима (опција -х):

ls -lh ana.h

С лева на десно, информације које лс пружа су:

Први знак је цртица „-“ и то нам говори да је датотека обична датотека, а не утичница, симболна веза или неки други тип објекта.
Власничка, група и друге дозволе су наведене у окталном формату.
Број тврдих веза које упућују на ову датотеку. У овом случају, иу већини случајева, биће један.
Власник датотеке је Даве.
Власник групе је Даве.
Величина датотеке је 802 бајта.
Датотека је последњи пут измењена у петак, 13. децембра 2015.
Име датотеке је ана.ц.

Хајде да погледамо са статистиком:

stat ana.h

Информације које добијамо од статистике су:

Датотека: Име датотеке. Обично је исто као име које смо проследили стат на командној линији, али може бити другачије ако гледамо симболичку везу.
Величина: Величина датотеке у бајтовима.
Блокови: Број блокова система датотека који су фајлови потребни да би се сачували на чврстом диску.
ИО Блоцк: Величина блока система датотека.
Тип датотеке: Тип објекта који метаподаци описују. Најчешћи типови су датотеке и директоријуми, али могу бити и везе, утичнице или именоване цеви.
Уређај: Број уређаја у хексадецимални и децимални. Ово је ИД чврстог диска на којем је сачувана датотека.
Иноде: Иноде број. То јест, ИД број ове иноде. Заједно, иноде број и број уређаја јединствено идентификују датотеку.
Везе: Овај број означава колико тврдих веза упућује на ову датотеку. Свака чврста веза има свој иноде. Дакле, други начин размишљања о овој цифри је колико инода указује на ову једну датотеку. Сваки пут када се направи или избрише чврста веза, овај број ће се повећати или смањити. Када достигне нулу, сама датотека је избрисана, а иноде је уклоњен. Ако користите стат у директоријуму, овај број представља број датотека у директоријуму, укључујући „.“ унос за тренутни директоријум и унос „..“ за родитељски директоријум.
Приступ: Дозволе за датотеке су приказане у окталном и традиционалном рвк формату (читање, писање, извршавање).
Уид: ИД корисника и назив налога власника.
Гид: ИД групе и назив налога власника.
Приступ: Временска ознака приступа. Не тако једноставно као што се чини. Модерне Линук дистрибуције користе шему звану релатиме, која покушава да то уради оптимизовати записе на чврсти диск који су потребни за ажурирање времена приступа. Једноставно речено, време приступа се ажурира ако је старије од измењеног времена.
Измени: временска ознака модификације. Ово је време када је садржај датотеке последњи пут измењен. (На срећу, садржај ове датотеке је последњи пут промењен пре четири године на дан.)
Промена: временска ознака промене. Ово је време када су атрибути или садржај датотеке последњи пут промењени. Ако измените датотеку постављањем нових дозвола за датотеку, временска ознака промене ће бити ажурирана (јер су се атрибути датотеке променили), али измењена временска ознака неће бити ажурирана (јер садржај датотеке није промењен).
Рођење: Резервисано за приказ оригиналног датума креирања датотеке, али ово није имплементирано у Линук-у.

  Тини Дедуплицатор претражује дупликате датотека на основу хеш вредности

Разумевање временских ознака

Временске ознаке су осетљиве на временску зону. -0500 на крају сваког реда показује да је ова датотека креирана на рачунару у а Координисано универзално време (УТЦ) временска зона која је пет сати испред временске зоне тренутног рачунара. Дакле, овај рачунар је пет сати иза рачунара који је направио ову датотеку. У ствари, датотека је креирана на рачунару временске зоне у Великој Британији, а ми је гледамо овде на рачунару у временској зони источног стандарда САД.

Временске ознаке модификације и промене могу изазвати забуну јер, за неупућене, њихова имена звуче као да значе исту ствар.

Хајде да користимо цхмод да изменимо дозволе фајла за датотеку која се зове ана.ц. Учинићемо да га сви могу писати. Ово неће утицати на садржај датотеке, али ће утицати на атрибуте датотеке.

chmod +w ana.c

А онда ћемо користити стат да погледамо временске ознаке:

stat ana.c

Временска ознака промене је ажурирана, али измењена није.

Измењена временска ознака биће ажурирана само ако се промени садржај датотеке. Временска ознака промене се ажурира и за промене садржаја и за промене атрибута.

Коришћење статистике са више датотека

Да бисте имали стат извештај за неколико датотека одједном, проследите имена датотека у стат у командној линији:

stat ana.h ana.o

Да бисте користили статистику на скупу датотека, користите подударање шаблона. Знак питања „?“ представља било који појединачни знак, а звездица „*“ представља било који низ знакова. Можемо рећи стат да извештава о било којој датотеци која се зове „ана“ са екстензијом од једног слова, са овом командом:

stat ana.?

Коришћење стат за извештавање о системима датотека

стат може известити о статусу система датотека, као ио статусу фајлова. Опција -ф (систем датотека) говори стат-у да извештава о систему датотека на којем се датотека налази. Имајте на уму да такође можемо проследити директоријум као што је „/“ у стат уместо имена датотеке.

stat -f ana.c

Статистички подаци које нам даје су:

  Шта је средњи софтвер?

Датотека: Име датотеке.
ИД: ИД система датотека у хексадецималној нотацији.
Намелен: Максимална дозвољена дужина за називе датотека.
Тип: Тип система датотека.
Величина блока: Количина података за захтевање захтева за читање за оптималне брзине преноса података.
Основна величина блока: Величина сваког блока система датотека.

Блокови:

Укупно: Укупан број свих блокова у систему датотека.
Бесплатно: Број слободних блокова у систему датотека.
Доступно: Број бесплатних блокова доступних редовним (не-роот) корисницима.

Иноди:

Укупно: Укупан број инода у систему датотека.
Слободно: Број слободних инода у систему датотека.

Дереференцирање симболичких веза

Ако користите стат на датотеци која је заправо симболична веза, она ће известити о вези. Ако желите да стат извештава о датотеци на коју веза упућује, користите опцију -Л (дереференцирање). Датотека цоде.ц је симболичка веза ка ана.ц. Погледајмо то без опције -Л:

stat code.c

Име датотеке показује цоде.ц који указује на ( -> ) ана.ц. Величина датотеке је само 11 бајтова. Нема блокова посвећених чувању ове везе. Тип датотеке је наведен као симболичка веза.

Јасно је да овде не гледамо стварни фајл. Урадимо то поново и додамо опцију -Л:

stat -L code.c

Ово сада приказује детаље датотеке за датотеку на коју указује симболичка веза. Али имајте на уму да је име датотеке и даље дато као цоде.ц. Ово је име везе, а не циљне датотеке. Ово се дешава зато што је ово име које смо проследили стату у командној линији.

Тхе Терсе Репорт

Опција -т (кратка) узрокује да стат пружи сажети резиме:

stat -t ana.c

Нису дати никакви трагови. Да бисте имали смисла – све док не запамтите секвенцу поља – потребно је да овај излаз повежете са пуним излазом статистике.

Прилагођени излазни формати

Бољи начин да добијете другачији скуп података од стат је да користите прилагођени формат. Постоји дуга листа токена који се називају секвенце формата. Сваки од њих представља елемент података. Изаберите оне које желите да укључите у излаз и креирајте низ формата. Када позовемо стат и проследимо стринг формата, излаз ће укључити само елементе података које смо захтевали.

Постоје различити скупови секвенци формата за датотеке и системе датотека. Листа датотека је:

  Како натерати Еевее да еволуира у Вапореан, Флареон и Јолтеон у Покемон Го-у

%а: Права приступа у окталном облику.
%А: Права приступа у људском читљивом облику (рвк).
%б: Број додељених блокова.
%Б: Величина у бајтовима сваког блока.
%д: Децимални број уређаја.
%Д: Број уређаја у хексадецималном.
%ф: Необрађени режим у хексадецималном.
%Ф Тип датотеке.
%г: ИД групе власника.
%Г: Име групе власника.
%х: Број тврдих веза.
%и: Иноде број.
%м: Тачка монтирања.
%н: Име датотеке.
%Н: Назив датотеке под наводницима, са дереференцираним именом датотеке ако је то симболичка веза.
%о: Савет за оптималну величину И/О преноса.
%с: Укупна величина, у бајтовима.
%т: Главни тип уређаја у хексадецималном, за посебне датотеке карактера/блока уређаја.
%Т: Минорни тип уређаја у хексадецимални, за посебне датотеке карактера/блока уређаја.
%у: кориснички ИД власника.
%У: Корисничко име власника.
%в: Време рођења датотеке, читљиво или цртица „-“ ако је непознато.
%В: Време рођења датотеке, секунде од Епохе; 0 ако је непознато.
%к: Време последњег приступа, читљиво.
%Кс: Време последњег приступа, секунде од Епохе.
%и: Време последње измене података, читљиво.
%И: Време последње измене података, секунде од Епохе.
%з: Време последње промене статуса, читљиво.
%З: Време последње промене статуса, секунде од Епохе.

„Епоха“ је Уник Епоцх, који се одржао 1970-01-01 00:00:00 +0000 (УТЦ).

За системе датотека, секвенце формата су:

%а: Број бесплатних блокова доступних редовним (не-роот) корисницима.
%б: Укупан број блокова података у систему датотека.
%ц: Укупан број инода у систему датотека.
%д: Број слободних инода у систему датотека.
%ф: Број слободних блокова у систему датотека.
%и: ИД система датотека у хексадецималном.
%л: Максимална дужина имена датотека.
%н: Име датотеке.
%с: Величина блока (оптимална величина за писање).
%С: Величина блокова система датотека (за број блокова).
%т: Тип система датотека у хексадецималном.
%Т: тип система датотека у људском читљивом облику.

Постоје две опције које прихватају низове секвенци формата. То су –формат и –принтф. Разлика између њих је –принтф интерпретира Есцапе секвенце у стилу Ц као што су нови ред н и таб т , и не додаје аутоматски знак новог реда у свој излаз.

Хајде да направимо стринг формата и проследимо га у стат. Секвенце формата које ће користити су %н за име датотеке, %с за величину датотеке и %Ф за тип датотеке. Додаћемо н излазну секвенцу на крај стринга да бисмо били сигурни да се сваки фајл рукује у новом реду. Наш низ формата изгледа овако:

"File %n is %s bytes, and is a %Fn"

Ово ћемо пренети у стат користећи опцију –принтф. Замолићемо стат да пријави датотеку под називом цоде.ц и скуп датотека које одговарају ана.?. Ово је потпуна команда. Обратите пажњу на знак једнакости „=“ између –принтф и низа формата:

stat --printf="File %n is %s bytes, and is a %Fn" code.c ana/ana.?

стат --принтф=

Извештај за сваки фајл је наведен у новом реду, што смо и тражили. Име датотеке, величина датотеке и тип датотеке су нам дати.

Прилагођени формати вам дају приступ још већем броју елемената података него што је укључено у стандардни излаз статистике.

Контрола финог зрна

Као што видите, постоји огроман обим за издвајање одређених елемената података који вас занимају. Вероватно такође можете да видите зашто смо препоручили коришћење алијаса за дуже и сложеније инкантације.