Το vim παγώνει μέσω SSH; Ελέγξτε το stty πριν κατηγορήσετε το VPN
Ένας παγωμένος επεξεργαστής μέσω SSH είναι συνήθως πρόβλημα κατάστασης τερματικού, όχι κομμένης σήραγγας. Διαβάστε το stty στο σωστό ψευδοτερματικό και επιδιορθώστε μόνο εκείνο.
Τέτοιες συνεδρίες μένουν συνδεδεμένες όσο ξεκινά ο επεξεργαστής, και μετά η οθόνη σταματά να ενημερώνεται παρόλο που η διεργασία SSH είναι προφανώς ζωντανή. Η πληκτρολόγηση δεν παράγει τίποτα, το Ctrl-C φαίνεται να μην κάνει τίποτα, και το προφανές συμπέρασμα είναι ότι το VPN άφησε κάτι να πέσει. Τις περισσότερες φορές η σήραγγα είναι εντάξει και το απομακρυσμένο ψευδοτερματικό βρίσκεται σε κατάσταση που κανείς δεν σκόπευε, επειδή η ηχώ, η κανονική είσοδος και ο έλεγχος ροής ζουν στο τερματικό και όχι στο δίκτυο. Το να βρεις ποιο από τα τρία μετακινήθηκε είναι δουλειά δύο εντολών.
Το πάγωμα ζει στο τερματικό, όχι στη σήραγγα
Ένα ψευδοτερματικό μεταφέρει περισσότερα από byte. Κρατά σημαίες πειθαρχίας γραμμής που αποφασίζουν αν η είσοδος αντικατοπτρίζεται, αν οι αναγνώσεις περιμένουν νέα γραμμή, αν ορισμένοι χαρακτήρες παράγουν σήματα και αν η έξοδος μπορεί να σταματήσει από χαρακτήρα ελέγχου. Ένας διαδραστικός επεξεργαστής βάζει αυτό το τερματικό σε ακατέργαστη λειτουργία για όλη τη διάρκεια και αναμένεται να επαναφέρει τις προηγούμενες ρυθμίσεις κατά την έξοδο. Όταν η επαναφορά δεν συμβεί, το κέλυφος στο οποίο επιστρέφετε δεν είναι το κέλυφος που αφήσατε, ακόμη και αν η σύνδεση δεν έπεσε ποτέ.
Συγκρίνετε τερματικά πριν καταλήξετε σε οτιδήποτε. Μια δεύτερη συνεδρία με τον ίδιο επεξεργαστή αποδεικνύει ότι ο πελάτης και η διαδρομή μπορούν να κάνουν τη δουλειά· δεν λέει τίποτα για το τερματικό του οποίου οι σημαίες είναι χαλασμένες.
Διαβάστε τις ρυθμίσεις στο τερματικό που πάγωσε
Προσδιορίστε πρώτα τη συσκευή και μετά διαβάστε και τις δύο μορφές της κατάστασής της. Η αναγνώσιμη μορφή δείχνει τι είναι ρυθμισμένο, και η μορφή μηχανής είναι αυτή που μπορείτε να επαναφέρετε αργότερα.
tty
stty -a
stty -g
Τρεις ομάδες σημαιών εξηγούν τις περισσότερες από αυτές τις αναφορές. Οι ρυθμίσεις ηχούς αποφασίζουν αν τα πλήκτρα εμφανίζονται καθόλου, οπότε ένα τερματικό με κλειστή ηχώ φαίνεται νεκρό ενώ το κέλυφος λαμβάνει κάθε χαρακτήρα. Η κανονική λειτουργία αποφασίζει αν ένα πρόγραμμα βλέπει είσοδο μία γραμμή τη φορά, οπότε ένα τερματικό που έμεινε σε κανονική λειτουργία κάνει μια εφαρμογή σε ακατέργαστη λειτουργία να φαίνεται ότι αγνοεί πλήκτρα μέχρι το Enter. Οι ρυθμίσεις ελέγχου ροής αποφασίζουν αν το τερματικό υπακούει στους χαρακτήρες XON και XOFF, και αυτή η ομάδα παράγει το πιο πειστικό ψεύτικο πάγωμα από τα τρία.
Καταγράψτε την έξοδο πριν αλλάξετε οτιδήποτε, ειδικά όταν η συνεδρία φέρει προσαρμοσμένες συνδεσμολογίες πλήκτρων από τις οποίες εξαρτάται κάποιος. Η μορφή μηχανής είναι το ασφαλέστερο αρχείο, με την επιφύλαξη ότι εξαρτάται από την υλοποίηση και θα πρέπει να επαναφέρεται από τον ίδιο τύπο συστήματος που το παρήγαγε.
Επιδιορθώστε εκείνο το τερματικό, όχι τη συνεδρία στην οποία πληκτρολογείτε
Η τυπική επιδιόρθωση επαναφέρει το υγιές προφίλ που απαριθμεί η σελίδα εγχειριδίου, και επηρεάζει μόνο ένα τερματικό. Αν ο επεξεργαστής κρατά ακόμη μη αποθηκευμένη εργασία σε εκείνο το τερματικό, αφήστε το ήσυχο μέχρι να αποθηκευτεί η εργασία.
Από άλλο κέλυφος, στοχεύστε ρητά τη παγωμένη συσκευή ώστε το τερματικό στο οποίο εργάζεστε να μείνει ανέγγιχτο.
stty -F /dev/pts/7 -a
stty -F /dev/pts/7 sane
Μια κενή οθόνη με χαλασμένη απεικόνιση είναι ξεχωριστό πρόβλημα από τη χαλασμένη πειθαρχία γραμμής, και το πρόγραμμα reset το αντιμετωπίζει εκπέμποντας ακολουθίες αρχικοποίησης τερματικού. Δοκιμάστε πρώτα την επιδιόρθωση κατάστασης, γιατί αλλάζει ρυθμίσεις που μπορείτε να επιθεωρήσετε, ενώ η ακολουθία reset ξαναγράφει την οθόνη και δεν εξηγεί τίποτα για το πώς χάλασε.
Η παγίδα Ctrl-S πίσω από ένα πειστικό πάγωμα
Όταν ο έλεγχος ροής λογισμικού είναι ενεργοποιημένος και οι συνήθεις χαρακτήρες έχουν εκχωρηθεί, το Ctrl-S λέει στο τερματικό να σταματήσει να στέλνει έξοδο και το Ctrl-Q του λέει να συνεχίσει. Η συνεδρία μένει ζωντανή καθ' όλη τη διάρκεια, ένα μόνο Ctrl-Q είναι συχνά όλη η επιδιόρθωση, και τίποτα δεν εμφανίζεται σε κανένα αρχείο καταγραφής, και έτσι αυτό το πάγωμα επιβιώνει τόσων κλιμακώσεων.
Επιθεωρήστε τις πραγματικές ρυθμίσεις αντί να τις υποθέτετε. Οι χαρακτήρες έναρξης και διακοπής μπορούν να εκχωρηθούν ξανά ή να απενεργοποιηθούν, και ένα τερματικό με κλειστό έλεγχο ροής δεν θα αντιδράσει σε κανέναν από τους δύο.
Αν η κατάσταση επιστρέψει, ή αν κολλήσει το ίδιο το SSH
Μια επαναλαμβανόμενη κακή κατάσταση δείχνει κάτι που αλλάζει τις σημαίες χωρίς να τις επαναφέρει: ένα αρχείο εκκίνησης, ένα σκριπτ περιτυλίγματος, έναν πολυπλέκτη που επαναφέρει το λάθος παράθυρο ή μια εφαρμογή που πεθαίνει κρατώντας την ακατέργαστη λειτουργία. Προσθέστε έναν υπό όρους έλεγχο που αναφέρει την κατάσταση αντί για μια άνευ όρων επαναφορά, γιατί μια καθολική επαναφορά κρύβει την αιτία και μπορεί να παρακάμψει σκόπιμες ρυθμίσεις.
Όταν κολλάει και η συνηθισμένη κίνηση SSH, ή η επιδιόρθωση δεν αλλάζει τίποτα, το τερματικό παύει να είναι ο ύποπτος.
ssh -vvv [email protected]
ping -M do -s 1400 -c 3 host.example.com
Ένα μπλοκάρισμα που εμφανίζεται μόνο κατά τις μεγάλες μεταφορές υποδηλώνει πρόβλημα MTU στη διαδρομή, ενώ ένα που καταπίνει και μεμονωμένα πλήκτρα δείχνει στη διαδρομή ή τον διακομιστή και όχι στο μέγεθος πακέτου. Κρατήστε τα στοιχεία του τερματικού χωριστά από τα στοιχεία του δικτύου, γιατί ένας επεξεργαστής που δουλεύει σε δεύτερη συνεδρία δεν αποδεικνύει ότι το πρώτο τερματικό ήταν ποτέ υγιές.