Bir ssh oturumunu öldürdükten sonra neden uzaktan işlemim hala çalışıyor?


15

Yerel bir kabukta bu komutu çalıştırarak bir uzak günlük dosyası kuyrukluyorum:

ssh remotemachine tail -100f /path/to/error_file

Bu komuttan ctrl-c yaptığımda, ctrl-c yerel ssh işlemini öldürüyor ve kuyruğumu uzak makinede çalıştırıyor gibi görünüyor. Bağlantının kesilmesinin (nohup kullanmadığımdan beri) bir hangup sinyali göndereceği ve süreci öldürdüğü izlenimindeydim, ancak durum böyle değil.

Hangup sinyalleri gönderildiğinde ve gönderilmediğinde kimse daha fazla ışık tutabilir mi? Uzak makine Ubuntu ve bunlardan biri fark yaratırsa yerel kabuğum OS X bash.

Yanıtlar:


13

Bu davranış, çalışan işlem için denetleyici bir terminalin olmamasından kaynaklanır. Uzak işlemin kontrol terminali yoksa, oturumunuzu işleyen uzak ssh işlemi, sonunda bir inisiyatik tarafından temizlenecek bir zombi durumunda asılı bırakılan komutu öldüremez.

Bunu kontrol terminali veren bir -t seçeneği ile çalıştırabilirsiniz. Bu, ssh komutunuzu uzaktan ctrl-c yaptığınızda işlemin sonlandırılmasına neden olur.

-T seçeneği:

Sahte tty ayırmayı zorla. Bu, uzak bir makinede, örneğin menü hizmetlerini uygularken çok yararlı olabilecek, rasgele ekran tabanlı programlar yürütmek için kullanılabilir. Birden fazla -t seçeneği, ssh'ın yerel tty'si olmasa bile tty ayırmayı zorlar.

Bu seçeneği kullandığınızda man ssh ve man sshd'a bir göz atın , çünkü kontrol terminaline sahip olmanın başka etkileri de vardır, örneğin kaçış karakterleri gönderme yeteneği.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.