Ini adalah pertanyaan yang telah dibahas beberapa kali, tidak hanya di sini, tetapi juga di situs lain dari jaringan pertukaran stack (mis. Bagaimana membuat ssh untuk mematikan proses jarak jauh ketika saya menyela ssh sendiri? ). Namun, saya tidak dapat membuat solusi apa pun berhasil untuk saya.
Saya menjalankan perintah melalui ssh. Setiap kali saya keluar ssh, saya ingin perintah untuk mati juga. Perintah ini adalah daemon bernama ktserver yang berjalan tanpa batas hingga Anda menekan Ctrl-C.
Saya menjalankannya sebagai berikut: ssh -t compute-0-1 ktserver
dan, memang, ketika saya menekan Ctrl-C, proses berakhir dengan anggun dan sesi ssh berakhir.
Namun, jika alih-alih menekan Ctrl-C, saya membunuh proses ssh menggunakan kill
perintah (misalnya, mengirim SIGINT atau SIGHUP), ktserver
prosesnya tetap hidup.
Bagaimana saya bisa membuat orang ktserver
mati selalu independen tentang bagaimana ssh
dibunuh?
EDIT : Jika, bukannya ktserver
saya menjalankan sesuatu yang sama sekali berbeda, seperti gedit
, semuanya berfungsi seperti pesona (yaitu gedit mati ketika koneksi mati). Karena itu, mungkin ada sesuatu yang salah dengan proses itu sendiri. Sebagai contoh, saya berpikir bahwa itu mungkin mengabaikan SIGHUP atau SIGINT. Namun, ketika saya menjalankan kill -1 ktserver
atau kill -2 ktserver
, proses mati seperti yang diharapkan.
EDIT2 : Seperti yang ditunjukkan oleh Mark Plotnick, masalah ini terkait dengan fakta bahwa tidak ada komunikasi yang beredar di saluran ssh. Saya telah mengkonfirmasi dengan menjalankan ssh -t <host> read
dan mematikan proses ssh sesudahnya. read
masih hidup dan menendang.
ssh example.com dd ...
Pekerjaan saya sudah selesai sampai berjam-jam bahkan setelah ssh
koneksi mati karena masalah jaringan. Jika Anda dapat mengubah ktserver
untuk mengambil opsi untuk mengeluarkan sesuatu sesekali, itu mungkin merupakan solusi.
read
di komputer jauh, dan setelah membunuh koneksi ssh, read
tidak mati. Sayangnya, saya tidak dapat mengubah ktserver untuk menghasilkan apa pun. Tidak ada solusi kalau begitu?
shopt -s huponexit
). Bisakah Anda menguji apakah ini cocok untuk Anda?
kill -9 ktserver
?