Jika saya menjalankan perintah dengan banyak output di tmux, tetapi memutuskan untuk membatalkannya dengan Ctrl-C, ada jeda 10-15 detik sebelum berhenti. Namun, jika saya melakukan hal yang sama di luar tmux, segera berhenti. Mengapa ini, dan apakah bisa diperbaiki?
Dalam praktiknya, masalah ini muncul ketika saya melakukan grep -R
pada direktori besar dan pencarian saya tidak cukup dibatasi. Solusinya adalah menyalurkan hasilnya wc
terlebih dahulu untuk memastikan hasilnya tidak terlalu lama, tapi itu hanya langkah lain yang ingin saya hindari.
Catatan:
- Ini memiliki perilaku yang sama di Terminal Gnome, uxterm, st, dan terminal virtual biasa (misalnya, ctrl-alt-f2), tetapi penundaannya kurang di terminal virtual biasa.
- Saya bukan satu-satunya: http://www.mail-archive.com/[email protected]/msg01569.html
- Penundaan lebih lama jika jendela terminal saya lebih besar. Untuk terminal layar penuh, dibutuhkan sekitar 15 detik untuk berhenti
grep -R
(tidak ada argumen lain) dalam direktori home yang berantakan. Untuk terminal 80x25 karakter, terminal akan segera berhenti.
grep -R "a" ~/
(tidak menulis ke file) ... danyes | nl | cut -f1 | head -9999999 > ~/file
kemudiancat ~/file
.Jawaban:
tmux sekarang memiliki opsi berikut:
Anda dapat mengatur nilai untuk ini, yang akan membuat ^ C dan teman-teman lebih mudah untuk mengetik. Lihat
man tmux
:sumber
setw -g c0-change-trigger 10
setw -g c0-change-interval 250
>> ~ / .tmux.confAnda selalu dapat mengeluarkan
kill-pane
perintah dari dalam sesi. Jika teks terminal terlihat seperti sampah yang mengganti nama jendela dan / atau mengeluarkannyareset
harus memperbaikinya.sumber
Karena
tmux
memasukkan sendiri antaracat
proses dan terminal Anda, ia perlu membaca output daricat
, menulisnya ke terminal, dan pada saat yang sama membaca input Anda dari terminal (the ^ C) dan mengirimkannya ke shell untuk menghentikan perintah. Saya tidak yakin persis apa yang menyebabkan penundaan, tetapi itu adalah sesuatu tentang bagaimanatmux
buffer I / O antara Anda dan shell yang berjalantmux
.sumber
Dengan asumsi Anda menggunakan ssh melalui koneksi latensi rendah, sudahkah Anda mencoba menggunakan mosh ? Di antara hal-hal lain yang sangat bagus seperti prediksi input dan juga sambungan yang terputus dan bahkan perubahan IP di sisi klien, itu juga secara khusus meningkatkan waktu reaksi ketika menggunakan Ctrl-C (dengan hanya memperbarui konten terminal secara berkala alih-alih mengirim seluruh aliran) .
Anda dapat menggunakan di
tmux
dalammosh
tanpa masalah.sumber
Saya mengalami masalah dengan tmux 2.3. Saya mencoba mengatur opsi c0-change-interval dan c0-change-trigger seperti yang dijelaskan di atas tetapi mereka tidak lagi tersedia. Berikut adalah perubahan git dengan solusi percobaan baru: https://github.com/tmux/tmux/commit/3f4ee98162cd5bb7000f93fec0e631e123b1281d
Kembali ke tmux 1.8 memperbaiki masalah bagi saya tanpa harus mengatur opsi apa pun.
sumber