Cukup tekan Ctrl+Ddua kali alih-alih Alt-F4atau Ctrl-Q, ini mengirimkan sinyal keluar ke ssh Anda saat ini, lalu ke shell Anda, dan terminal emulator akan menutup secara otomatis tanpa shell. Masalah terpecahkan.
Profpatsch
@Profpatsch: kecuali, tentu saja, Anda menggunakan IGNOREEOF(di bash) karena Anda juga menggunakan multiplexer terminal dan mendapat lelah dari kadang-kadang salah ketik ^a dsebagai ^d, sehingga berhenti tidak sengaja.
0xC0000022L
Jawaban:
28
Tidak semuanya. Ketika proses terminal keluar, proses klien di dalam juga akan mati, dan ketika ini terjadi, koneksi ke server jauh akan ditutup oleh sistem operasi. Server akan melihat koneksi ditutup, dan menghentikan proses di server.
Namun, ada kemungkinan bahwa Anda mungkin berakhir dengan proses berlama-lama di server jika mereka dilatar belakangi dan mengabaikan sinyal tertentu.
Ketika kami menutup terminal secara langsung, Ini menghasilkan sinyal SIGHUP. Sinyal ini membunuh semua tugas / proses di bawah terminal secara otomatis / instan. Jadi tidak ada masalah yang terjadi.
Ini mungkin tidak benar. Jika bash menjalankan loop, ia dapat mengabaikan SIGHUP dan melanjutkan sesi. Saat ini saya mencoba mencari tahu mengapa ini terjadi.
Juga, proses penutupan sangat baik di sini tetapi ternyata Systemd telah mengubah beberapa perilaku.
Akan lebih baik jika Anda memvalidasi klaim Anda terlebih dahulu sebelum menjawab, daripada menjawab dengan "ini mungkin tidak benar".
Kusalananda
Yah itu semua tergantung. Tampaknya berbeda antara: * Pengaturan sistem init * Pengaturan shell * Proses sedang berjalan di terminal dan penanganan sinyalnya
Ctrl+D
dua kali alih-alihAlt-F4
atauCtrl-Q
, ini mengirimkan sinyal keluar ke ssh Anda saat ini, lalu ke shell Anda, dan terminal emulator akan menutup secara otomatis tanpa shell. Masalah terpecahkan.IGNOREEOF
(dibash
) karena Anda juga menggunakan multiplexer terminal dan mendapat lelah dari kadang-kadang salah ketik^a d
sebagai^d
, sehingga berhenti tidak sengaja.Jawaban:
Tidak semuanya. Ketika proses terminal keluar, proses klien di dalam juga akan mati, dan ketika ini terjadi, koneksi ke server jauh akan ditutup oleh sistem operasi. Server akan melihat koneksi ditutup, dan menghentikan proses di server.
Namun, ada kemungkinan bahwa Anda mungkin berakhir dengan proses berlama-lama di server jika mereka dilatar belakangi dan mengabaikan sinyal tertentu.
sumber
Ketika kami menutup terminal secara langsung, Ini menghasilkan sinyal SIGHUP. Sinyal ini membunuh semua tugas / proses di bawah terminal secara otomatis / instan. Jadi tidak ada masalah yang terjadi.
sumber
Ini mungkin tidak benar. Jika bash menjalankan loop, ia dapat mengabaikan SIGHUP dan melanjutkan sesi. Saat ini saya mencoba mencari tahu mengapa ini terjadi.
Juga, proses penutupan sangat baik di sini tetapi ternyata Systemd telah mengubah beberapa perilaku.
/server/463366/does-getting-disconnected-from-an-ssh-session-kill-your-programs
sumber