Οι συμβολικές συνδέσεις σε Linux είναι ένα φανταστικό χαρακτηριστικό, αλλά μπορεί να γίνει σπασμένα και αριστερά δείχνει σε τίποτα. Εδώ είναι πώς να εντοπίσετε σπασμένα συμβολικές συνδέσεις, αναθεωρούν, και να τα αφαιρέσετε από το σύστημά σας, αν χρειαστεί.
Συμβολική Σύνδεσμοι 101
συμβολικές συνδέσεις , Που ονομάζεται επίσης «μαλακά συνδέσμους» και «symlinks,» είναι μια μορφή συντομεύσεις που μπορεί να δείχνουν σε αρχεία και καταλόγους. Ένας δεσμός μοιάζει ακριβώς όπως ένα κανονικό αρχείο ή τον κατάλογο σε ένα παράθυρο του διαχειριστή αρχείων. Δείχνει, επίσης, ως μια καταχώρηση σε ένα αρχείο καταλόγου σε ένα παράθυρο τερματικού. Το αρχείο ή ο κατάλογος στον οποίο οι δεσμός σημεία μπορεί να είναι οπουδήποτε στο δέντρο του συστήματος αρχείων.
Για παράδειγμα, ας υποθέσουμε ότι έχετε ένα συμβολικό σύνδεσμο στον προσωπικό σας κατάλογο που ονομάζεται «dave-σύνδεσμος» ότι τα σημεία σε ένα αρχείο που ονομάζεται «text-file.txt» που βρίσκεται κάπου αλλού στο δέντρο του συστήματος αρχείων. Οι εντολές που χρησιμοποιείτε στο συμβολικό δεσμό που εφαρμόζονται αυτόματα στο αρχείο στο οποίο επισημαίνει. Εάν προσπαθείτε να χρησιμοποιήσετε
Γάτα
ή
πιο λιγο
στο συμβολικό σύνδεσμο, θα δείτε πραγματικά τα περιεχόμενα του αρχείου «text-file.txt».
Μια τυπική εγκατάσταση του Linux περιέχει πολλές symlinks. Ακόμα κι αν δεν δημιουργούν κανένα οι ίδιοι, οι χρήσεις του λειτουργικού συστήματος τους. ρουτίνες εγκατάστασης εφαρμογών χρησιμοποιούν συχνά συμβολικούς δεσμούς με το σημείο με τα αρχεία εκτελέσιμα. Όταν το λογισμικό ενημερώνεται, το δυαδικό αρχείο αντικαθίσταται με τη νέα έκδοση, και όλα τα symlinks συνεχίσουμε να εργαζόμαστε όπως και πριν, εφ 'όσον το όνομα του νέου αρχείου είναι το ίδιο με το παλιό.
Μπορούμε να δούμε εύκολα μερικές συμβολικούς δεσμούς με τη χρήση
ls
στο ριζικό κατάλογο. Μερικές από τις ενδείξεις που εμφανίζονται με διαφορετικό χρώμα για μας
Ubuntu 20.10
μηχανή δοκιμής, από όπου και αν εμφανίζονται με γαλάζιο.
Πληκτρολογούμε τα εξής:
ls /
Μπορούμε να πάρουμε μια βαθύτερη ματιά, χρησιμοποιώντας το
-μεγάλο
(Μακρά λίστα) επιλογή. Εμείς πληκτρολογήστε την ακόλουθη εντολή για να εξετάσουμε όλες τις ενδείξεις «lib» και το single «bin» εισόδου:
ls -l / lib * / bin
Κατά την έναρξη της κάθε γραμμής είναι ένα «L», το οποίο υποδεικνύει το αντικείμενο είναι ένα symlink. Το κείμενο μετά «- & gt?» δείχνει σε ό, τι δείχνει η δεσμός. Στο παράδειγμά μας, οι στόχοι είναι όλοι οι κατάλογοι.
Τα δικαιώματα που αναφέρονται ως διαβάζει, να γράφει, και να εκτελέσει για τον ιδιοκτήτη, την ομάδα και τους άλλους. Αυτά είναι προεπιλεγμένες καταχωρήσεις ψεύτικο. Δεν αντικατοπτρίζουν τα πραγματικά δικαιώματα για τα αντικείμενα σε ποιο σημείο τα symlinks. Είναι τα δικαιώματα για το αρχείο προορισμού ή τον κατάλογο που υπερισχύουν και έχουν τιμηθεί με το σύστημα αρχείων.
Broken Δημιουργία συνδέσμου
Ένας δεσμός έχει σπάσει (ή αριστερά κουνάμε) όταν το αρχείο στο οποίο επισημαίνει διαγραφεί ή μετακινηθεί σε άλλη θέση. Αν ρουτίνα απεγκατάσταση μιας εφαρμογής δεν λειτουργεί σωστά, ή διακόπτεται πριν ολοκληρωθεί, ίσως να μείνει με σπασμένα symlinks.
Αν κάποιος διαγράφει το χέρι ένα αρχείο χωρίς να γνωρίζει συμβολικούς δεσμούς σημείο σε αυτό, αυτά τα symlinks θα πάψουν να λειτουργούν. Θα είναι σαν πινακίδες που δείχνουν προς μια πόλη που είναι ήδη ισοπεδώνονται.
Μπορούμε εύκολα να δείτε αυτήν τη συμπεριφορά χρησιμοποιώντας ένα συμβολικό σύνδεσμο που ονομάζεται «γεια» στον τρέχοντα κατάλογο. Εμείς, πληκτρολογήστε τα ακόλουθα, χρησιμοποιώντας
ls
να το δω:
ls -l
Υπενθυμίζει σε ένα πρόγραμμα που ονομάζεται «HTG» σε έναν κατάλογο που ονομάζεται «bin». Αν «τρέξει» το συμβολικό σύνδεσμο, εκτελεί το πρόγραμμα για εμάς:
./ γεια
Μπορούμε τώρα να ελέγξετε αν αυτό είναι ό, τι συμβαίνει με το τρέξιμο άμεσα το πρόγραμμα:
../ bin / HTG
Όπως ήταν αναμενόμενο, θα έχουμε την ίδια απάντηση. Ας διαγράψετε το αρχείο του προγράμματος:
rm ../bin/htg
Τώρα, όταν εξετάζουμε το συμβολικό σύνδεσμο, βλέπουμε ότι είναι εισηγμένες στο κόκκινο επειδή το Linux ξέρει ότι είναι σπασμένα. Μας λέει επίσης αυτό που χρησιμοποιείται για το σημείο, έτσι ώστε να μπορεί να αντικαταστήσει το αρχείο, μεταγλωττίσετε το πρόγραμμα, ή να κάνετε ό, τι είναι απαραίτητο για την επισκευή του συμβολικού συνδέσμου.
Σημειώστε ότι αν προσπαθήσουμε να εκτελέσετε το συμβολικό σύνδεσμο, το σφάλμα θα έχουμε αναφορές στο όνομα symlink, παρά το όνομα του προγράμματος στο οποίο τα σημεία δεσμός.
Πληκτρολογούμε τα εξής:
./ γεια
Η εύρεση Broken Δημιουργία συνδέσμου
Οι περισσότερες σύγχρονες εκδόσεις
εύρημα
έχω το
xtype
(Τύπου επεκτείνεται) επιλογή,
το οποίο απλοποιεί την εύρεση σπασμένα symlinks
. Θα χρησιμοποιήσουμε το
μεγάλο
σημαία με
xtype
, Για να το πω για να αναζητήσετε συνδέσμους. Χρησιμοποιώντας
εύρημα
και
xtype
ως εξής, χωρίς καμία από τις άλλες
τύπος
σημαίες, οι δυνάμεις
xtype
να επιστρέψει κατεστραμμένες συνδέσεις:
βρει. -xtype l
Η εκτέλεση της εντολής στο σπίτι τεστ κατάλογο μας βρίσκει αρκετά σπασμένα symlinks. Σημειώστε ότι η αναζήτηση είναι αναδρομική από προεπιλογή, έτσι ώστε να ψάχνει όλους τους υποκαταλόγους αυτόματα.
Το «γεια» δεσμός που έσπασε επίτηδες είναι εισηγμένη, όπως περιμέναμε. Ένας από τους άλλους συμβολικούς δεσμούς που σχετίζονται με το πρόγραμμα περιήγησης Firefox, και τα υπόλοιπα συνδέονται με ασφαλίσει.
Αν σωλήνα της εξόδου μέσω
τουαλέτα
με την
-μεγάλο
(Γραμμές) επιλογή, μπορούμε να υπολογίζουμε τις γραμμές, το οποίο είναι το ίδιο με την καταμέτρηση των σπασμένα symlinks.
Πληκτρολογούμε τα εξής:
βρει. -xtype l | wc -l
Είμαστε ενημέρωσε ότι έχουμε 24 σπασμένα συμβολικούς δεσμούς που δείχνουν σε τίποτα.
Βρείτε, κριτική, και στη συνέχεια Κατάργηση
Πριν βιαστούμε και να διαγράψετε όλα τα σπασμένα τους συμβολικούς δεσμούς, να κοιτάξετε μέσα από τα αποτελέσματα της
εύρημα
εντολή. Δείτε αν υπάρχει βάσιμος λόγος για κάποια από τα σπασμένα symlinks.
Μερικές φορές, ο δεσμός μπορεί να είναι το πρόβλημα, όχι το αρχείο προορισμού. Εάν δημιουργήθηκε το συμβολικό σύνδεσμο σωστά θα μπορούσε να χαρακτηριστεί τίποτα, αλλά ο πραγματικός στόχος είναι παρούσα. Re-δημιουργία του συμβολικού συνδέσμου θα είναι η λύση σε αυτή την περίπτωση.
Είναι επίσης πιθανό ότι μια εκ πρώτης όψεως σπάσει δεσμός χρησιμοποιείται ως κάτι άλλο, όπως μια ένδειξη ενός κλειδώματος αρχείου ή άλλο / χωρίς ένδειξη Go Go. Firefox κάνει αυτό? Αυτό είναι ό, τι το πρώτο δεσμός στη λίστα μας. Ο Firefox δεν χρησιμοποιείται σε μηχανή δοκιμής μας, όμως, έτσι είναι ασφαλές για μας να το διαγράψετε.
Είναι επίσης πιθανό ο στόχος είναι παρούσα μόνο περιοδικά, και αυτή είναι η συμπεριφορά που αναμένεται (και επιθυμητό) του συγκεκριμένου λογισμικού. Ίσως το αρχείο προορισμού αντιγράφεται από ένα άλλο μηχάνημα ή το σύννεφο, που εκτελεί τη λειτουργία της, και στη συνέχεια διαγράφονται και πάλι, μόνο για να αντικατασταθεί από ένα διαφορετικό πρόγραμμα στον επόμενο κύκλο.
Το σπασμένο δεσμός μπορεί επίσης να είναι ένα σύμπτωμα μιας εγκατάστασης λογισμικού που απέτυχε. Σε αυτή την περίπτωση, αντί να διαγράψετε το συμβολικό σύνδεσμο, θα πρέπει είτε να το διορθώσετε χειροκίνητα ή να επαναλάβετε την εγκατάσταση.
Όταν έχετε καθορίσει τις σπασμένες συνδέσεις θα πρέπει να κρατήσει, επαναλάβετε την εντολή για την εκτέλεση της αναζήτησης. Οι σταθερές συμβολικών συνδέσμων θα πρέπει στη συνέχεια να απουσιάζει από τα αποτελέσματα αναζήτησης.
Για λόγους ασφαλείας, είναι καλύτερο να περιορίσει δεσμός μετακομίσεις σας με τις δικές σας καταλόγους. Να είστε ιδιαίτερα επιφυλακτικοί τρέχει αυτές τις εντολές ως root, ή σε καταλόγους του συστήματος.
Αφαίρεση Broken Δημιουργία συνδέσμου
ο
-exec
(Εκτέλεση) η επιλογή εκτελεί εντολές για την
εύρημα
Αποτελέσματα αναζήτησης. Εμείς πάμε για τη χρήση
rm
για να διαγράψετε κάθε σπασμένα δεσμός. ο
{}
κορδόνι αντικαθίσταται με το όνομα του κάθε σπασμένα δεσμός, όπως ο καθένας ανακαλύπτει
εύρημα
.
Πρέπει να χρησιμοποιήσετε ένα ερωτηματικό (
;
) Να καταγγείλει τη λίστα με τις εντολές που θέλουμε
-exec
τρέχω. Θα χρησιμοποιήσουμε μια ανάστροφη κάθετο (
\
) Για να «ξεφύγουν» το ερωτηματικό, έτσι ώστε να αντιμετωπίζεται ως μέρος της
εύρημα
εντολή, παρά κάτι
Κτυπώ δυνατά
θα πρέπει να ενεργήσει.
Πληκτρολογούμε τα εξής:
βρει. -xtype l-exec rm {} \?
Είμαστε επέστρεψε στην γραμμή εντολών χωρίς καμία ένδειξη ότι κάτι έχει συμβεί. Για να βεβαιωθείτε ότι οι κατεστραμμένες συνδέσεις έχουν αφαιρεθεί, επαναλαμβάνουμε την εντολή να ψάξουν για αυτούς, ως εξής:
βρει. -xtype l
Δεν υπάρχουν αποτελέσματα που να ταιριάζουν, τα οποία μέσα τα σπασμένα συμβολικούς δεσμούς έχουν αφαιρεθεί.
Θυμηθείτε να Επανεξέταση Πρώτα
Και πάλι, παίρνουν πάντα το χρόνο να εξετάσει μια λίστα με τους συμβολικούς δεσμούς, πριν να εκτελέσετε την εντολή για να τα διαγράψετε. Μπορείτε να αποφύγετε την διαγραφή σας βέβαιοι είστε για εκτελώντας την εντολή να τα διαγράψετε στους κατάλληλους καταλόγους.
Για παράδειγμα, πάνω, θα μπορούσαμε να εκτελέσετε την εντολή στον κατάλογο «.snap», και στη συνέχεια να αφαιρεθεί με το χέρι το μοναχικό «γεια» δεσμός. Αυτό θα μπορούσε να αφήσει την ασφάλεια του Firefox δεσμός ανέγγιχτη.