Како пронаћи и избрисати покварене симболичне везе на Линуку

Симболичке везе на Линук-у су фантастична карактеристика, али се могу покварити и оставити да не показују ништа. Ево како да лоцирате покварене симболичке везе, прегледате их и уклоните их из система ако је потребно.

Симболичке везе 101

Симболичке везе, које се називају и „меке везе“ и „симболне везе“, су облик пречица које могу да упућују на датотеке и директоријуме. Симболна веза изгледа као обична датотека или директоријум у прозору менаџера датотека. Такође се појављује као унос у листи датотека у прозору терминала. Датотека или директоријум на који симболична веза упућује може бити било где у стаблу система датотека.

На пример, рецимо да имате симболичку везу у свом матичном директоријуму под називом „даве-линк“ која указује на датотеку под називом „тект-филе.ткт“ која се налази негде другде у стаблу система датотека. Команде које користите на симболичној вези се аутоматски примењују на датотеку на коју она указује. Ако покушате да користите цат или мање на симболичној вези, видећете садржај датотеке „тект-филе.ткт“.

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

Лако можемо видети неке симболичне везе користећи лс у основном директоријуму. Неки од уноса су приказани у другој боји—на нашој Убунту 20.10 тест машини, приказани су светло плавом бојом.

Укуцавамо следеће:

ls /

Можемо да погледамо дубље коришћењем опције -л (дуга листа). Укуцавамо следећу команду да погледамо све уносе „либ“ и један унос „бин“:

ls -l /lib* /bin

На почетку сваког реда је „л“, што указује да је ставка симболична веза. Текст после „->” показује на шта симболска веза показује. У нашем примеру, циљеви су сви директоријуми.

  Управљање тимом је једноставно уз софтвер за тимски рад

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

Покварене симболичне везе

Симболска веза је покварена (или остављена да виси) када се датотека на коју показује се обрише или премести на другу локацију. Ако рутина деинсталације апликације не функционише исправно или је прекинута пре него што се заврши, можда ћете остати са поквареним симболским везама.

Ако неко ручно избрише датотеку, а да не зна да симболичне везе упућују на њу, те симболичне везе више неће радити. Биће као путокази који упућују на град који је срушен булдожером.

Лако можемо видети ово понашање користећи симболичку везу која се зове „здраво“ у тренутном директоријуму. Откуцавамо следеће, користећи лс да га видимо:

ls -l

Он указује на програм који се зове „хтг“ у директоријуму који се зове „бин“. Ако „покренемо“ симболичку везу, она ће за нас извршити програм:

./hello

Сада можемо да проверимо да ли се ово дешава директним покретањем програма:

../bin/htg

Као што се и очекивало, добијамо исти одговор. Хајде да избришемо програмску датотеку:

rm ../bin/htg

Сада, када погледамо симболичку везу, видимо да је наведен црвено јер Линук зна да је покварен. Такође нам говори на шта је некада указивао, тако да можемо да заменимо датотеку, поново компајлирамо програм или урадимо све што је потребно да поправимо симболичку везу.

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

  Како да видите све блокиране бројеве на вашем иПхоне-у

Укуцавамо следеће:

./hello

Проналажење покварених симболичних веза

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

find . -xtype l

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

Симболна веза „здраво“ коју смо намерно разбили је наведена, као што смо очекивали. Једна од других симболичних веза се односи на претраживач Фирефок, а остале су повезане са снимцима.

Ако преведемо излаз кроз вц са опцијом -л (линије), можемо пребројати редове, што је исто као и бројање прекинутих симболичних веза.

Укуцавамо следеће:

find . -xtype l | wc -l

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

Пронађите, прегледајте, а затим уклоните

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

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

Такође је могуће да се очигледно покварена симболичка веза користи као нешто друго, као што је индикатор закључавања датотеке или други индикатор покретања/забрањивања. Фирефок то ради; то је оно што је прва симболична веза на нашој листи. Међутим, Фирефок се не користи на нашој машини за тестирање, тако да је безбедно да га избришемо.

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

  12 најбољих бежичних ЦарПлаи адаптера за безбедну вожњу

Неисправна веза симбола такође може бити симптом неуспешне инсталације софтвера. У том случају, уместо да избришете симболичку везу, требало би да је поправите ручно или да поновите инсталацију.

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

Ради безбедности, најбоље је да ограничите уклањање симболичних веза на сопствене директоријуме. Будите изузетно опрезни када покрећете ове команде као роот или у системским директоријумима.

Уклањање покварених симболичних веза

Опција -екец (изврши) покреће команде за резултате претраге. Користићемо рм да избришемо сваку покварену симболичку везу. Стринг {} се замењује именом сваке прекинуте симболичне везе пошто је сваки откривен помоћу финд.

Морамо да користимо тачку и зарез (;) да бисмо прекинули листу команди које желимо да покрене -екец. Користићемо обрнуту косу црту () да „избегнемо“ тачку и зарез, тако да се третира као део команде проналажења, а не као нешто на шта би Басх требало да делује.

Укуцавамо следеће:

find . -xtype l -exec rm {} ;

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

find . -xtype l

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

Не заборавите да прво прегледате

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

На пример, изнад, могли смо да покренемо команду у директоријуму „.снап“, а затим ручно уклонимо усамљену симболичку везу „здраво“. Ово би оставило симболичку везу за закључавање Фирефок-а нетакнутом.