Ya, program yang berjalan di atas SSH akan bergantung pada outputnya pergi ke suatu tempat. Jika koneksi lambat, output harus di buffer di suatu tempat, dan buffer tidak dapat tanpa batas, sehingga program harus diblokir jika diisi.
Perhatikan bahwa output mungkin tidak harus pergi ke terminal: pertimbangkan menjalankan sesuatu seperti
ssh user@somewhere "cat file.txt" > file.txt
Ini pada dasarnya akan menyalin file. Agar ini berfungsi, laju output kucing harus cocok dengan koneksi: harus jelas bahwa kehilangan bagian output dari tengah tidak dapat diterima.
Layar akan mengubah situasi di mana ia bertindak seperti terminal dan akan menyimpan apa yang seharusnya ditampilkan "pada jendela terminal" (plus scrollback). Tidak perlu mengingat semua output program Anda, hanya bagian-bagian yang sesuai dengan "jendela" dan scrollback. Secara default, layar akan menunggu koneksi yang lambat (memblokir program), tetapi itu dapat dikonfigurasikan untuk mendeteksi koneksi yang macet dengan mengatur "nonblock on".
Dari halaman manual:
nonblock [hidup | mati | numsecs]
Beri tahu layar cara menangani antarmuka pengguna (tampilan) yang berhenti menerima output. Ini bisa terjadi jika pengguna menekan ^ S atau koneksi TCP / modem terputus tetapi tidak ada hangup yang diterima. Jika nonblock dimatikan (ini adalah default) layar menunggu sampai layar restart untuk menerima output. Jika nonblock aktif, layar menunggu sampai batas waktu tercapai (on diperlakukan sebagai 1s). Jika tampilan masih tidak menerima karakter, layar akan menganggapnya "diblokir" dan berhenti mengirim karakter ke sana. Jika suatu saat restart untuk menerima karakter, layar akan membuka blokir tampilan dan menampilkan kembali isi jendela yang diperbarui.
Pemutusan berbeda dari koneksi yang lambat. SSH biasa tidak dapat pulih darinya secara otomatis, sehingga program Anda akan menerima SIGHUP. Di sisi lain, layar akan mendeteksi pemutusan, melepaskan dan kembali ke buffering lokal sampai layar disambungkan kembali. Ini tidak akan memblokir program yang sedang berjalan.
(Pengaturan nonblock 1
pada Anda .screenrc
adalah penting jika Anda menjalankan sesuatu seperti irssi yang akan terus menghasilkan output tetapi masih harus berbicara dengan jaringan pada saat yang sama. Memblokir akan menyebabkan terputusnya sambungan dari IRC, yang sangat menyebalkan ...)