Ö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
tmux
tmux'u başlatmak için koşctrl-B D
ayı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 attach
ve mesajı alıyorumno sessions
ve çalışantmux ls
dö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 exit
veya 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.