Rangkuman : Saya mencoba mencari tahu mengapa sesi tmux saya mati ketika saya memutuskan sambungan dari ssh
Detail :
Saya telah menginstal tmux pada sistem Arch Linux. Ketika saya memulai sesi tmux saya dapat melepaskannya dan kemudian melampirkan lagi saat sesi ssh aktif. Tetapi jika saya mengakhiri sesi ssh saya maka sesi tmux terbunuh.
Saya tahu ini bukan perilaku normal karena saya memiliki sistem lain di mana sesi tmux terus berjalan bahkan jika sesi ssh berakhir dan saya dapat melampirkan ke sesi tmux setelah membuat koneksi ssh baru. Sistem yang memiliki masalah dan yang berfungsi dengan benar memiliki konfigurasi yang sangat mirip, jadi saya tidak yakin apa yang harus diperiksa.
Saya menjalankan tmux versi 1.9a. Sistem yang memiliki masalah (bahwa saya memiliki akses root untuk) memiliki versi kernel Linux 3.17.4-1 dan sistem yang berfungsi dengan benar memiliki versi kernel 3.16.4-1-ARCH (Saya tidak memiliki root pada itu sistem). Saya ragu bahwa versi kernel adalah sumber masalahnya, hanya satu perbedaan yang saya perhatikan.
Saya pikir saya akan bertanya untuk melihat apakah ada yang melihat masalah yang sama dan mengetahui kemungkinan solusi.
Langkah-langkah tepat yang mengarah ke masalah adalah:
- ssh ke mesin
- jalankan
tmux
untuk memulai tmux ctrl-B D
untuk melepaskan (pada titik ini saya bisa bergabung kembali dengantmux attach
- close ssh sesi (pada titik ini sesi tmux terbunuh, saya sudah bisa mengamati ini ketika saya login sebagai root di terminal yang berbeda)
- sambungkan kembali dengan ssh dan jalankan
tmux attach
dan saya mendapatkan pesanno sessions
dan menjalankantmux ls
pengembalianfailed to connect to server: Connection refused
. Ini masuk akal karena servisnya tidak berjalan. Apa yang tidak masuk akal bagi saya adalah mengapa itu terbunuh pada langkah 4 ketika saya memutuskan sambungan dari sesi ssh.
data strace:
Menanggapi salah satu komentar saya menggunakan strace untuk melihat sistem apa yang membuat proses server tmux. Sepertinya ketika saya keluar dari sesi ssh saya (dengan mengetik exit
atau dengan ctrl-d
) bahwa proses tmux sedang terbunuh. Berikut potongan bagian akhir dari output strace.
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 +++
Saya membandingkan ini dengan sistem yang berbeda di mana tmux bekerja dengan baik dan pada sistem itu proses tmux terus berjalan bahkan setelah saya keluar. Jadi akar penyebabnya adalah bahwa proses tmux sedang dihentikan ketika saya menutup sesi ssh. Saya harus meluangkan waktu memecahkan masalah ini untuk mencari tahu mengapa, tapi saya pikir saya akan memperbarui pertanyaan saya karena saran strace berguna.