Özet : ssh bağlantısını kestiğimde tmux oturumumun neden öldüğünü anlamaya çalışıyorum
Ayrıntılar :
Arch Linux sisteminde tmux yüklü. Bir tmux oturumu başlattığımda, ssh oturumu etkin durumdayken ondan ayrılıp tekrar ekleyebilirim. Ama eğer ssh oturumumu bitirirsem tmux oturumu öldürülür.
Ssh oturumu sonlandırılsa bile tmux oturumunun çalışmaya devam ettiği başka bir sistemim olduğu için bu normal bir davranış olmadığını biliyorum ve yeni bir ssh bağlantısı kurduktan sonra tmux oturumuna ekleyebilirsiniz. Bir sorunu olan ve doğru çalışan bir sistem çok benzer yapılandırmalara sahiptir, bu yüzden ne kontrol edeceğimi bilmiyorum.
Tmux sürüm 1.9a kullanıyorum. (Kök erişimine sahip olduğum) problemi olan sistemin Linux çekirdek sürümü 3.17.4-1 ve doğru çalışan sistemin çekirdek sürümü 3.16.4-1-ARCH (bunun üzerinde kök yok) sistem). Çekirdek versiyonunun sorunun kaynağı olduğuna şüphe ediyorum, bu fark ettiğim tek bir fark.
Herkesin benzer bir problem görüp görmediğini ve olası bir çözümü bilip bilmediğini görmek isteyeceğimi düşündüm.
Soruna yol açan kesin adımlar şunlardır:
- ssh makineye
tmuxtmux'u başlatmak için koşctrl-B Dayırmak için (bu noktadatmux attach- ssh oturumu kapat (bu noktada tmux oturumu öldürüldü, farklı bir terminalde root olarak giriş yaptığımda bunu gözlemleyebildim)
- ssh ile yeniden bağlanın ve çalıştırın
tmux attachve mesajı alıyorumno sessionsve çalışantmux lsdönerfailed to connect to server: Connection refused. Bu mantıklı çünkü servis çalışmıyor. Bana mantıklı gelmeyen şey, ssh oturumundan ayrıldığımda neden 4. adımda öldürüleceğidir.
strace verileri:
Yorumlardan birine yanıt olarak, tmux sunucu işleminin hangi sistemleri çağırdığını görmek için strace kullandım. SSH oturumumdan çıktığımda (yazarak exitveya ile ctrl-d) tmux işleminin öldürüldüğüne benziyor . Burada, strace çıktısının son kısmının bir parçacığı var.
poll([{fd=4, events=POLLIN}, {fd=11, events=POLLIN}, {fd=6, events=POLLIN}], 3, 424) = ? ERESTART_RESTARTBLOCK (Interrupted by signal)
--- SIGTERM {si_signo=SIGTERM, si_code=SI_USER, si_pid=1, si_uid=0} ---
sendto(3, "\17", 1, 0, NULL, 0) = 1
+++ killed by SIGKILL +++
Bunu tmux'un düzgün çalıştığı farklı bir sistemle karşılaştırdım ve bu sistemde ben çıktıktan sonra bile tmux işlemi devam ediyor. Ben kök neden ssh oturumu kapattığınızda tmux işlemi sonlandırılıyor gibi görünüyor. Nedenini bulmak için bu sorunu gidermek için biraz zaman harcamam gerekecek, ancak strace önerisinin yararlı olması nedeniyle sorumu güncelleyeceğimi düşündüm.