Sesi seperti ini tetap terhubung saat editor mulai, lalu layar berhenti diperbarui meskipun proses SSH jelas masih hidup. Mengetik tidak menghasilkan apa pun, Ctrl-C tampak tidak melakukan apa pun, dan kesimpulan yang jelas adalah VPN menjatuhkan sesuatu. Sebagian besar waktu terowongan baik-baik saja dan pseudo-terminal jarak jauh berada dalam keadaan yang tidak diinginkan siapa pun, karena echo, input kanonik, dan kendali aliran hidup di terminal, bukan di jaringan. Mencari tahu mana dari ketiganya yang bergeser adalah pekerjaan dua perintah.

Pembekuan hidup di terminal, bukan di terowongan

Pseudo-terminal membawa lebih dari sekadar byte. Ia menyimpan flag disiplin baris yang menentukan apakah input digaungkan, apakah pembacaan menunggu baris baru, apakah karakter tertentu menghasilkan sinyal, dan apakah keluaran dapat dihentikan oleh karakter kendali. Editor interaktif mengalihkan terminal itu ke mode mentah selama seluruh durasi dan seharusnya memulihkan pengaturan sebelumnya saat keluar. Ketika pemulihan tidak terjadi, shell tempat Anda kembali bukan shell yang Anda tinggalkan, meskipun koneksi tidak pernah terputus.

Bandingkan terminal sebelum menyimpulkan apa pun. Sesi kedua yang menjalankan editor yang sama membuktikan bahwa klien dan jalur dapat melakukan pekerjaan itu; itu tidak mengatakan apa pun tentang terminal yang flag-nya rusak.

Baca pengaturan pada terminal yang membeku

Identifikasi perangkatnya dulu, lalu baca kedua bentuk keadaannya. Bentuk yang dapat dibaca menunjukkan apa yang diatur, dan bentuk mesin adalah yang dapat Anda masukkan kembali nanti.

tty
stty -a
stty -g

Tiga kelompok flag menjelaskan sebagian besar laporan ini. Pengaturan echo menentukan apakah ketukan tombol muncul sama sekali, jadi terminal dengan echo mati tampak mati sementara shell menerima setiap karakter. Mode kanonik menentukan apakah program melihat input satu baris pada satu waktu, jadi terminal yang dibiarkan dalam mode kanonik membuat aplikasi mode mentah tampak mengabaikan tombol hingga Enter. Pengaturan kendali aliran menentukan apakah terminal mematuhi karakter XON dan XOFF, dan kelompok itu menghasilkan pembekuan palsu yang paling meyakinkan dari ketiganya.

Catat keluarannya sebelum mengubah apa pun, terutama ketika sesi membawa pengikatan tombol khusus yang diandalkan seseorang. Bentuk mesin adalah catatan teraman, dengan catatan bahwa itu bergantung pada implementasi dan harus dipulihkan oleh jenis sistem yang sama yang menghasilkannya.

Perbaiki satu terminal itu, bukan sesi tempat Anda mengetik

Perbaikan standar memulihkan profil sehat yang dicantumkan halaman manual, dan itu hanya memengaruhi satu terminal. Jika editor masih menyimpan pekerjaan yang belum disimpan di terminal itu, biarkan sampai pekerjaan itu disimpan.

Dari shell lain, tuju perangkat yang membeku secara eksplisit agar terminal tempat Anda bekerja tetap tidak tersentuh.

stty -F /dev/pts/7 -a
stty -F /dev/pts/7 sane

Layar kosong dengan tampilan rusak adalah masalah terpisah dari disiplin baris yang rusak, dan program reset menanganinya dengan memancarkan urutan inisialisasi terminal. Coba perbaikan keadaan dulu, karena itu mengubah pengaturan yang dapat Anda periksa, sementara urutan reset menulis ulang layar dan tidak menjelaskan apa pun tentang bagaimana kerusakannya.

Jebakan Ctrl-S di balik pembekuan yang meyakinkan

Ketika kendali aliran perangkat lunak diaktifkan dan karakter biasa ditetapkan, Ctrl-S memberitahu terminal untuk berhenti mengirim keluaran dan Ctrl-Q memberitahunya untuk melanjutkan. Sesi tetap hidup sepanjang waktu, satu Ctrl-Q sering menjadi seluruh perbaikannya, dan tidak ada yang muncul di log mana pun, dan begitulah pembekuan ini bertahan dari begitu banyak eskalasi.

Periksa pengaturan sebenarnya alih-alih mengasumsikannya. Karakter mulai dan berhenti dapat ditetapkan ulang atau dinonaktifkan, dan terminal dengan kendali aliran mati tidak akan bereaksi terhadap keduanya.

Jika keadaan kembali, atau SSH sendiri tersendat

Keadaan buruk berulang menunjuk pada sesuatu yang mengubah flag tanpa memulihkannya: berkas startup, skrip pembungkus, multiplekser yang mengatur ulang jendela yang salah, atau aplikasi yang mati sambil memegang mode mentah. Tambahkan pemeriksaan bersyarat yang melaporkan keadaan alih-alih pengaturan ulang tanpa syarat, karena pengaturan ulang menyeluruh menyembunyikan penyebabnya dan dapat menimpa pengaturan yang disengaja.

Ketika lalu lintas SSH biasa juga tersendat, atau perbaikan tidak mengubah apa pun, terminal berhenti menjadi tersangka.

ssh -vvv [email protected]
ping -M do -s 1400 -c 3 host.example.com

Macet yang hanya muncul selama transfer besar menunjukkan masalah MTU jalur, sedangkan yang juga menelan ketukan tunggal menunjuk ke jalur atau server, bukan ke ukuran paket. Pisahkan bukti terminal dari bukti jaringan, karena editor yang berfungsi di sesi kedua bukan bukti bahwa terminal pertama pernah sehat.

Artikel terkait