Ketika saya memulai sesi SSH yang mengeksekusi perintah yang sudah berjalan lama, apa yang terjadi dengan penanganan Ctrl+ C(SIGINT)?
Saya dapat melihat bahwa sesi SSH ditutup, tetapi saya tidak yakin siapa yang mendapatkan SIGINT pertama: apakah itu ...
perintah jarak jauh yang berjalan lama? yaitu, (a) pengendali sinyal dalam perintah jarak jauh dipanggil dan menghentikan perintah jarak jauh, (b) shell yang menelurkannya mendeteksi bahwa perintah berhenti, dan berhenti juga (c) sshd jarak jauh mendeteksi shell berhenti, jadi itu menutup koneksi
atau
ssh lokal menerima sinyal, dan menutup koneksi.
Saya pikir (1) sedang terjadi, tetapi ingin memastikan.
Saya juga tidak yakin tentang apa yang terjadi dengan penanganan shell SIGINT dalam kasus ini. Misalnya, jika saya ...
ssh remote 'while true ; do sleep 1 ; date ; done'
dan Ctrl+ C, maka koneksi jarak jauh dijatuhkan. Apakah ada cara untuk menjalankan perintah remote di bawah shell yang akan tetap hidup setelah Ctrl+ C? Artinya, dalam hal ini, hentikan loop dan izinkan saya untuk terus bekerja pada shell jarak jauh?
ssh remote command
, sebagai lawan darissh remote
) akan dibunuh (di sisi lokal) oleh SIGINT yang dihasilkan dengan mengetikkan ctrl-C. Sisi jarak jauh mungkin (tergantung pada OS) tetap berjalan sampai mencoba membaca atau menulis ke soket yang tertutup. Jika Anda ingin semua penekanan tombol, termasuk ctrl-C, diteruskan ke remote, gunakanssh remote
.