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

Ако је све у Линук-у датотека, то мора бити више од датотека на вашем чврстом диску. Овај водич ће вам показати како да користите лсоф да видите све друге уређаје и процесе који се обрађују као датотеке.

На Линук-у је све датотека

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

Многе друге компоненте система прихватају или генеришу токове бајтова, као што су тастатуре, утичнице, штампачи и комуникациони процеси. Пошто они или прихватају, генеришу или прихватају и генеришу токове бајтова, овим уређајима се може руковати — на веома ниском нивоу — као да су датотеке.

Овај концепт дизајна је поједноставио имплементацију Уник оперативног система. То је значило да се мали скуп руковалаца, алата и АПИ-ја може креирати за руковање широким спектром различитих ресурса.

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

Како да сазнамо о свим другим процесима и уређајима који се третирају као да су датотеке? Користимо команду лсоф. Ово наводи отворене датотеке у систему. То јест, наводи све чиме се рукује као да је датотека.

лсоф команда

Многи процеси или уређаји о којима лсоф може да извештава припадају роот-у или су покренути од стране роот-а, тако да ћете морати да користите команду судо са лсоф-ом.

И пошто ће овај списак бити веома дугачак, ми ћемо га проћи кроз мање.

sudo lsof | less

Пре него што се појави лсоф излаз ГНОМЕ корисници могу видети поруку упозорења у прозору терминала.

lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.

лсоф покушава да обради све монтиране системе датотека. Ова порука упозорења се јавља зато што је лсоф наишао на а ГНОМЕ виртуелни систем датотека (ГВФС). Ово је посебан случај а систем датотека у корисничком простору (ОСИГУРАЧ). Делује као мост између ГНОМЕ-а, његових АПИ-ја и кернела. Нико — чак ни роот — не може приступити једном од ових система датотека, осим власника који га је монтирао (у овом случају, ГНОМЕ). Можете занемарити ово упозорење.

  10 варалица командне линије за Виндовс, Линук и мацОС

Излаз из лсоф-а је веома широк. Крајње леве колоне су:

Крајње десне колоне су:

Тхе лсоф Цолумнс

Све колоне се не примењују на сваки тип отворене датотеке. Нормално је да неки од њих буду празни.

Команда: Име команде повезане са процесом који је отворио датотеку.
ПИД: Идентификациони број процеса који је отворио датотеку.
ТИД: Задатак (нит) Идентификациони број. Празна колона значи да то није задатак; то је процес.
Корисник: ИД корисника или име корисника коме процес припада, или кориснички ИД или логин особе која поседује директоријум у /проц где лсоф проналази информације о процесу.
ФД: Приказује дескриптор датотеке. Дескриптори датотека су описани у наставку.
Тип: тип чвора повезаног са датотеком. Типови белешки су описани у наставку.
Уређај: Садржи или бројеве уређаја, одвојене зарезима, за посебан карактер, специјални блок, регуларни, директоријум или НФС датотеку, или референтну адресу кернела која идентификује датотеку. Такође може да прикаже основну адресу или име уређаја Линук АКС.25 соцкет уређаја.
Величина/Искључено: Приказује величину датотеке или помак датотеке у бајтовима.
Чвор: Приказује број чвора локалне датотеке или иноде број НФС датотеке у хосту сервера или тип интернет протокола. Може приказати СТР за ток или ИРК или иноде број Линук АКС.25 соцкет уређаја.
Име: Приказује име тачке монтирања и система датотека на којем се датотека налази.

Колона ФД

Дескриптор датотеке у колони ФД може бити једна од многих опција; ман страница наведите их све.

Унос ФД колоне може да се састоји од три дела: дескриптора датотеке, знака режима и знака за закључавање. Неки уобичајени дескриптори датотека су:

цвд: Тренутни радни директоријум.
грешка: грешка у информацијама о ФД (погледајте колону НАМЕ).
лтк: Текст заједничке библиотеке (код и подаци).
м86: ДОС спајање мапиране датотеке.
мем: датотека мапирана у меморију.
ммап: Уређај мапиран у меморију.
пд: Родитељски именик.
ртд: Основни директоријум.
ткт: текст програма (код и подаци)
Број, који представља дескриптор датотеке.

Карактер мода може бити један од следећих:

р: Приступ за читање.
в: Приступ за писање.
у: Приступ за читање и писање.
‘ ‘: Знак за размак, ако је режим непознат и нема знака за закључавање.
–: Режим је непознат и постоји знак за закључавање.

Знак за закључавање може бити један од:

р: Прочитајте закључавање на делу датотеке.
Р: Прочитајте закључавање целе датотеке.
в: Закључавање писања на делу датотеке.
В: Упишите закључавање на целу датотеку.
у: Читање и писање браве било које дужине.
У: Непознати тип браве.
‘ ‘: знак за размак. Нема браве.

Колона ТИПЕ

Постоје преко 70 уноса који се могу појавити у колони ТИПЕ. Неки уобичајени уноси које ћете видети су:

РЕГ: Уобичајена датотека система датотека.
ДИР: Именик.
ФИФО: Први улази први излази.
ЦХР: Посебна датотека карактера.
БЛК: Блокирајте посебну датотеку.
ИНЕТ: Интернет утичница.
уник: утичница УНИКС домена

Погледајте Процеси који су отворили датотеку

Да бисте видели процесе који су отворили одређену датотеку, наведите име датотеке као параметар за лсоф. На пример, да видите процесе који су отворили керн.лог датотеку, користите ову команду:

sudo lsof /var/log/kern.log

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

  5 најбољих бесплатних ГИФ снимача за Линук

Погледајте Све датотеке отворене из директоријума

Да бисте видели датотеке које су отворене из директоријума и процесе који су их отворили, проследите директоријум у лсоф као параметар. Морате користити опцију +Д (директориј).

Да бисте видели све датотеке које су отворене у директоријуму /вар/лог/, користите ову команду:

sudo lsof +D /var/log/

лсоф одговара са листом свих отворених датотека у том директоријуму.

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

sudo lsof +D /home

Приказују се датотеке које су отворене из /хоме директоријума. Имајте на уму да је са краћим описима у неким колонама цео списак ужи.

Листа датотека које је отворио процес

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

sudo lsof -c ssh -c init

лсоф пружа листу датотека које је отворио било који од процеса наведених у командној линији.

Погледајте Датотеке које је отворио корисник

Да бисте ограничили приказ на датотеке које је отворио одређени корисник, користите опцију -у (корисник). У овом примеру ћемо погледати датотеке које су отворили процеси који су у власништву или покренути у име Мари.

sudo lsof -u mary

Све наведене датотеке су отворене у име корисника Мари. Ово укључује датотеке које је отворило окружење радне површине, на пример, или једноставно као резултат тога што се Марија пријавила.

Искључујући датотеке које је отворио корисник

Да бисте искључили датотеке које је отворио корисник, користите оператор ^. Искључивање корисника из листе олакшава проналажење информација које вас занимају. Морате користити опцију -у као и раније и додати знак ^ на почетак имена корисника.

sudo lsof +D /home -u ^mary

Овог пута, листа за /хоме директоријум не укључује ниједну датотеку коју је отворила корисник Мари.

Листа датотека које је отворио процес

Да бисте навели датотеке које је отворио одређени процес, користите опцију -п (процес) и наведите ИД процеса као параметар.

sudo lsof - p 4610

Све датотеке које су отворене помоћу ИД-а процеса који наведете су наведене за вас.

Навођење ИД-ова процеса који су отворили датотеку

Да бисте видели ИД-ове процеса за процесе који су отворили одређену датотеку, користите опцију -т (кратко) и наведите име датотеке у командној линији.

sudo lsof -t /usr/share/mime/mime.cache

ИД-ови процеса су приказани у једноставној листи.

Користите АНД и ОР претраге

Хајде да наведемо датотеке које је отворила корисница Мари, а које се односе на ССХ процесе. Знамо да можемо да обезбедимо више од једне ставке за претрагу на командној линији, тако да би ово требало да буде лако.

sudo lsof -u mary -c ssh

Сада погледајмо излаз из лсоф-а. То не изгледа у реду; постоје уноси у излазу који су покренути од стране роот-а.

То није оно што смо очекивали. Шта се десило?

  Како направити резервну копију е-поште на Линук-у помоћу ИМАП Граб-а

Када наведете више термина за претрагу, лсоф ће вратити било коју датотеку која одговара првом термину за претрагу или другом термину за претрагу, итд. Другим речима, врши претрагу ИЛИ.

Да би лсоф извршио И претрагу, користите опцију -а (и). То значи да ће једине датотеке које ће бити наведене бити оне које одговарају првом термину за претрагу, другом термину за претрагу итд.

Хајде да покушамо то поново и користимо опцију -а.

sudo lsof -u mary -c ssh -a

Сада је свака датотека на листи она коју је отворила Мари или у њено име и повезана је са ССХ командом.

Аутоматско освежавање екрана

Можемо користити опцију +|-р (понављање) да ставимо лсоф у режим понављања. Опција понављања се може применити на два начина, +р или -р. Такође морамо додати број секунди које желимо да лсоф сачека пре освежавања екрана.

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

Са опцијом -р ово ће се наставити све док не притиснете Цтрл+Ц. Са +р форматом, наставиће се све док нема резултата за приказ или док не притиснете Цтрл+Ц.

sudo lsof -u mary -c ssh -a -r5

Обратите пажњу на испрекидану линију на дну листе. Ово раздваја сваки нови приказ података када се излаз освежи.

Приказ датотека повезаних са интернет везама

Опција -и (интернет) вам омогућава да видите датотеке отворене процесима повезаним са мрежним и интернет конекцијама.

lsof -i

Приказују се све датотеке које су отвориле мрежне и интернет везе.

Приказивање датотека повезаних са Интернет везама према ИД-у процеса

Да бисте видели датотеке које отварају интернет везе које су повезане са одређеним ИД-ом процеса, додајте опцију -п и опцију -а.

Овде тражимо датотеке отворене путем интернета или мрежне везе, процесом са ИД-ом 606.

sudo lsof -i -a -p 606

Приказују се све датотеке које је отворио процес ИД 606 које су повезане са интернет или мрежним везама.

Приказ датотека повезаних са Интернет везама и командама

Можемо користити опцију -ц (команда) да тражимо датотеке отворене одређеним процесима. Да бисте потражили датотеке које су отвориле интернет или мрежне везе повезане са ссх процесом, користите следећу команду:

lsof -i -a -c ssh

Све датотеке отворене због ссх процеса су наведене у излазу.

Приказ датотека повезаних са интернет конекцијама и портовима

Можемо да направимо лсоф извештај о датотекама које су отвориле интернет или мрежне везе на одређеном порту. Да бисмо то урадили, користимо знак : иза којег следи број порта.

Овде тражимо од лсоф-а да наведе датотеке које су отворене мрежном или интернет конекцијом користећи порт 22.

lsof -i :22

Све наведене датотеке отворили су процеси повезани са портом 22 (који је подразумевани порт за ССХ везе).

Приказ датотека повезаних са Интернет везама и протоколима

Можемо тражити од лсоф-а да прикаже датотеке које су отворили процеси повезани са мрежним и интернет конекцијама, а који користе одређени протокол. Можемо бирати између ТЦП, УДП и СМТП. Хајде да користимо ТЦП протокол и видимо шта добијамо.

sudo lsof -i tcp

Једине наведене датотеке су оне које отварају процеси који користе ТЦП протокол.

Само смо изгребали површину

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

Команда лсоф се може користити за све дубље удубљивање у слојеве отворених датотека и псеудо-датотека. Обезбедили смо скицу мапе; атлас је у ман страница.