Linux’taki sembolik bağlantılar harika bir özelliktir, ancak bozulabilir ve hiçbir şeyi göstermeden bırakılabilirler. Kırık sembolik bağlantıları nasıl bulacağınız, gözden geçireceğiniz ve gerekirse sisteminizden nasıl kaldıracağınız aşağıda açıklanmıştır.
Sembolik Bağlantılar 101
“Yumuşak bağlantılar” ve “sembolik bağlantılar” olarak da adlandırılan sembolik bağlantılar, dosyalara ve dizinlere işaret edebilen bir kısayol biçimidir. Bir sembolik bağ, bir dosya yöneticisi penceresindeki normal bir dosya veya dizine benzer. Ayrıca, bir terminal penceresindeki bir dosya listesinde bir girdi olarak görünür. Sembolik bağın işaret ettiği dosya veya dizin, dosya sistemi ağacının herhangi bir yerinde olabilir.
Örneğin, ana dizininizde dosya sistemi ağacında başka bir yerde bulunan “metin-dosya.txt” adlı bir dosyaya işaret eden “dave-link” adlı bir sembolik bağınız olduğunu varsayalım. Sembolik bağda kullandığınız komutlar, işaret ettiği dosyaya otomatik olarak uygulanır. Kullanmaya çalışırsan cat
veya less
sembolik bağda, aslında “metin-dosyası.txt” dosyasının içeriğini göreceksiniz.
Standart bir Linux kurulumu birçok sembolik bağlantı içerir. Kendiniz oluşturmasanız bile, işletim sistemi bunları kullanır. Uygulama yükleme rutinleri, çalıştırılabilir dosyalara işaret etmek için genellikle sembolik bağlar kullanır. Yazılım güncellendiğinde, ikili dosya yeni sürümle değiştirilir ve yeni dosyanın adı eski ile aynı olduğu sürece tüm sembolik bağlantılar eskisi gibi çalışmaya devam eder.
Kullanarak bazı sembolik bağları kolayca görebiliriz ls
kök dizinde. Girişlerden bazıları farklı bir renkte görüntülenir – Ubuntu 20.10 test makinemizde, bunlar açık mavi renkte görüntülenir.
Aşağıdakileri yazıyoruz:
ls /
Kullanarak daha derinlemesine bakabiliriz -l
(uzun liste) seçeneği. Tüm “lib” girişlerine ve tek “bin” girişine bakmak için aşağıdaki komutu yazıyoruz:
ls -l /lib* /bin
Her satırın başında, öğenin bir sembolik bağ olduğunu belirten bir “l” vardır. “->” işaretinden sonraki metin sembolik bağın neyi işaret ettiğini gösterir. Örneğimizde, hedeflerin tümü dizinlerdir.
İzinler, sahip, grup ve diğerleri için okuma, yazma ve yürütme olarak listelenir. Bunlar varsayılan sahte girişlerdir. Sembolik bağlantıların işaret ettiği nesneler üzerindeki gerçek izinleri yansıtmazlar. Öncelikli olan ve dosya sistemi tarafından kabul edilen hedef dosya veya dizindeki izinlerdir.
Bozuk Sembolik Bağlantılar
Bir sembolik bağ, işaret ettiği dosya silindiğinde veya başka bir konuma taşındığında kopar (veya sol sallanır). Bir uygulamanın kaldırma rutini düzgün çalışmazsa veya tamamlanmadan kesilirse, kırık sembolik bağlantılarla baş başa kalabilirsiniz.
Bir kişi sembolik bağları göstermeden bir dosyayı elle silerse, bu sembolik bağlar artık çalışmayacaktır. Buldozerli bir kasabayı gösteren yol işaretleri gibi olacaklar.
Mevcut dizinde “merhaba” adlı bir sembolik bağ kullanarak bu davranışı kolayca görebiliriz. Aşağıdakileri kullanarak yazıyoruz ls
görmek için:
ls -l
“Bin” adlı bir dizindeki “htg” adlı bir programa işaret ediyor. Sembolik bağlantıyı “çalıştırırsak”, programı bizim için çalıştırır:
./hello
Şimdi, programı doğrudan çalıştırarak bunun olup olmadığını kontrol edebiliriz:
../bin/htg
Beklendiği gibi aynı yanıtı alıyoruz. Program dosyasını silelim:
rm ../bin/htg
Simdi sembolik bağa baktığımızda, onun kırmızıyla listelendiğini görüyoruz çünkü Linux onun bozuk olduğunu biliyor. Ayrıca bize eskiden neyi işaret ettiğini söyler, böylece dosyayı değiştirebilir, programı yeniden derleyebilir veya sembolik bağlantıyı onarmak için ne gerekiyorsa yapabiliriz.
Sembolik bağı çalıştırmaya çalışırsak, aldığımız hatanın sembolik bağın işaret ettiği programın adı yerine sembolik bağ adını referans aldığına dikkat edin.
Aşağıdakileri yazıyoruz:
./hello
Bozuk Sembolik Bağlantıları Bulma
En modern versiyonları find
var xtype
(genişletilmiş tip) seçeneği, bozuk sembolik bağları bulmayı kolaylaştırır. Kullanacağız l
ile bayrak xtype
, bağlantı aramasını söylemek için. Kullanma find
ve xtype
aşağıdaki gibi, diğerleri olmadan type
bayraklar, kuvvetler xtype
bozuk bağlantıları döndürmek için:
find . -xtype l
Komutu test ana dizinimizde çalıştırmak epeyce bozuk sembolik bağlantı bulur. Aramanın varsayılan olarak yinelemeli olduğunu, bu nedenle tüm alt dizinleri otomatik olarak aradığını unutmayın.
Bilerek bozduğumuz “merhaba” sembolik bağlantı, beklediğimiz gibi listelenir. Diğer sembolik bağlantılardan biri Firefox tarayıcısıyla, geri kalanı ise snap’lerle ilişkilidir.
Çıkışı kanalize edersek wc
ile -l
(çizgiler) seçeneği, kesik sembolik bağları saymakla aynı olan satırları sayabiliriz.
Aşağıdakileri yazıyoruz:
find . -xtype l | wc -l
Hiçbir şeyi işaret eden 24 bozuk sembolik bağımız olduğu konusunda bilgilendirildik.
Bul, İncele ve ardından Kaldır
Acele etmeden ve tüm bozuk sembolik bağları silmeden önce, aşağıdaki sonuçlara bakın: find
komut. Bozuk sembolik bağlantılardan herhangi birinin geçerli bir nedeni olup olmadığına bakın.
Bazen sorun, hedef dosyadan ziyade sembolik bağlantı olabilir. Sembolik bağlantı yanlış oluşturulmuşsa hiçbir şeye işaret etmeyebilir, ancak gerçek hedef mevcuttur. Sembolik bağın yeniden oluşturulması bu durumda çözüm olacaktır.
Görünüşe göre bozuk bir sembolik bağın başka bir şey olarak kullanılması da mümkündür, örneğin bir dosya kilidi göstergesi veya başka bir devam / gitme göstergesi gibi. Firefox bunu yapar; listemizdeki ilk sembolik bağlantı budur. Firefox test makinemizde kullanılmıyor, bu yüzden onu silmemiz güvenlidir.
Hedefin yalnızca periyodik olarak mevcut olması da mümkündür ve bu, söz konusu yazılımın beklenen (ve istenen) davranışıdır. Belki hedef dosya başka bir makineden veya buluttan kopyalanır, işlevini yerine getirir ve sonra tekrar silinir, ancak sonraki döngüde farklı bir programla değiştirilir.
Bozuk sembolik bağlantı, başarısız olan bir yazılım kurulumunun da belirtisi olabilir. Bu durumda, sembolik bağlantıyı silmek yerine ya elle düzeltmeli ya da kurulumu tekrar etmelisiniz.
Tutmanız gereken bozuk bağlantıları düzelttiğinizde, aramayı gerçekleştirmek için komutu tekrarlayın. Sabit sembolik bağlar daha sonra arama sonuçlarında olmamalıdır.
Güvenlik adına, sembolik bağlantı kaldırma işlemlerinizi kendi dizinlerinizle sınırlamak en iyisidir. Bu komutları kök olarak veya sistem dizinlerinde çalıştırırken son derece dikkatli olun.
Bozuk Sembolik Bağlantıları Kaldırma
-exec
(yürüt) seçeneği, komutları find
Arama Sonuçları. Kullanacağız rm
bozuk her sembolik bağlantıyı silmek için. {}
string, her biri tarafından keşfedildiğinden, her kopuk sembolik bağın adı ile değiştirilir. find
.
Noktalı virgül kullanmalıyız (;
) istediğimiz komutların listesini sonlandırmak için -exec
koşmak. Ters eğik çizgi kullanacağız () noktalı virgülden “kaçmak” için, bu nedenle
find
bir şey yerine komut Bash
harekete geçmeli.
Aşağıdakileri yazıyoruz:
find . -xtype l -exec rm {} ;
Herhangi bir şey olduğuna dair hiçbir gösterge olmadan komut istemine geri döndük. Bozuk bağlantıların kaldırıldığını doğrulamak için, bunları arama komutunu aşağıdaki gibi tekrar ederiz:
find . -xtype l
Eşleşen sonuç yok, bu da bozuk sembolik bağlantıların kaldırıldığı anlamına gelir.
Önce İncelemeyi Unutmayın
Yine, silmek için komutu çalıştırmadan önce sembolik bağlantıların listesini her zaman gözden geçirin. Uygun dizinlerde silme komutunu çalıştırarak emin olmadığınız herhangi bir şeyi silmekten kaçınabilirsiniz.
Örneğin, yukarıda, komutu “.snap” dizininde çalıştırabilir ve sonra tek başına “merhaba” sembolik bağlantıyı manuel olarak kaldırabilirdik. Bu, Firefox kilit sembolik bağlantısına dokunulmazdı.