Perintah tmux Linux: pisahkan sesi terminal dan sambungkan lagi

tmux adalah pengelola beberapa terminal dalam satu tampilan, atau terminal multiplexer. Anda dapat memisahkan tampilan klien dari sesi lalu menyambungkannya lagi, sehingga pekerjaan di dalam sesi dapat tetap berjalan ketika koneksi terminal luar terputus selama server tmux dan sistemnya tetap hidup.

Tmux bukan cadangan pekerjaan setelah mesin dimatikan. Reboot, berakhirnya server tmux, atau berakhirnya program di dalam sesi dapat mengakhiri pekerjaan. Bedakan memisahkan klien dengan menutup shell atau mengakhiri sesi.

Kenali sesi, jendela, dan panel

  • Server tmux adalah proses latar belakang yang mengelola sesi dan program di dalamnya.
  • Klien menampilkan sebuah sesi pada terminal luar yang Anda gunakan.
  • Sesi mengelompokkan satu atau beberapa jendela dan mempunyai nama.
  • Jendela berisi satu atau beberapa panel.
  • Panel menyediakan terminal untuk shell atau program yang berjalan di dalamnya.

Ketika klien dipisahkan, server dapat tetap mengelola sesi tanpa tampilan klien tersebut. Itulah sebabnya pemutusan koneksi SSH berbeda dari mematikan mesin yang menjalankan server tmux.

Periksa tmux sebelum memulai

tmux [PERINTAH] [OPSI]

PERINTAH dan OPSI merupakan penanda. Periksa ketersediaan dengan command -v tmux, versi dengan tmux -V, serta bantuan melalui man tmux. Jika belum terpasang, gunakan paket tmux dari pengelola paket distribusi sesuai petunjuk distribusi tersebut.

Latihan berikut dilakukan pada terminal interaktif di komputer yang akan menjalankan pekerjaan. Untuk pekerjaan pada server SSH, jalankan tmux pada server itu. Saat menyambung ulang, masuk kembali ke host serta akun pengguna yang sama dan gunakan server tmux yang sama. Hindari membuat sesi bersarang dari dalam sesi tmux lain untuk latihan awal ini.

Buat sesi bernama work

Periksa dahulu daftar sesi dengan tmux ls. Jika work sudah ada, gunakan sesi yang memang Anda kenali atau pilih nama latihan lain; jangan menghapus sesi yang sudah ada hanya untuk memakai nama contoh.

tmux new -s work

Perintah ini membuat sesi work dan langsung menampilkan shell di dalamnya. Anda biasanya melihat baris status tmux. Tampilan, warna, dan shell bawaan dapat berbeda jika konfigurasi tmux telah disesuaikan.

Untuk pemeriksaan sederhana pada shell Bash di panel tersebut, buat penanda dengan penanda_tmux=latihan. Penanda ini hanya variabel shell uji; sesudah menyambung kembali ke panel yang sama, Anda dapat membacanya untuk memastikan shell itu masih berjalan.

Pisahkan klien lalu sambungkan lagi

Dengan pintasan bawaan, tekan Ctrl+b, lepaskan kedua tombol, lalu tekan d huruf kecil. Prompt shell di luar tmux akan kembali. Ini adalah dua tahap penekanan tombol, bukan menekan Ctrl+b+d sekaligus.

Huruf kecil penting: setelah prefiks, d memisahkan klien saat ini, sedangkan D huruf besar membuka pilihan klien yang akan dipisahkan. Jika pintasan sudah diubah dalam konfigurasi, gunakan pengaturan yang berlaku.

tmux ls

Jalankan perintah daftar sesi dari shell luar setelah pemisahan. Sesi work seharusnya masih tercatat jika server dan sesi tersebut tetap ada. Daftar itu menunjukkan sesi, bukan jaminan bahwa setiap program di dalamnya sudah menyelesaikan tugas dengan benar.

tmux attach -t work

Anda kembali ke tampilan sesi work. Pada panel Bash yang dipakai sebelumnya, jalankan printf '%s\n' "$penanda_tmux"; hasil latihan yang diharapkan adalah latihan jika shell serta variabelnya masih sama. Jika penanda tidak terlihat, periksa host, akun, nama sesi, jendela, dan panel sebelum menyimpulkan pekerjaan hilang.

Ketika koneksi SSH terputus, sambungkan SSH kembali ke server yang sama, periksa daftar sesi, lalu gunakan attach. Jangan membuat sesi baru dengan nama berbeda sebagai langkah pertama bila tujuan Anda adalah melanjutkan sesi lama.

Contoh urutan untuk sesi demo

Contoh berikut memakai nama demo sebagai latihan terpisah. Pastikan nama itu belum digunakan. Jangan tempelkan tiga baris ini sebagai skrip tanpa jeda: baris pertama langsung memasuki tmux, sehingga Anda harus memisahkan klien dengan Ctrl+b lalu d sebelum menjalankan dua baris berikutnya pada shell luar.

tmux new -s demo
tmux ls
tmux attach -t demo

Ilustrasi ringkas sesi yang sudah terpisah:

demo: 1 windows (detached)

Baris tersebut adalah gambaran keadaan, bukan bentuk keluaran persis yang dijamin setiap versi. Tmux ls dapat menampilkan waktu pembuatan, jumlah jendela, ukuran, atau penanda attached. Tidak munculnya kata detached tidak dengan sendirinya berarti sesi gagal dipisahkan.

Jika pembuatan sesi gagal karena nama sudah ada, periksa tmux ls dan identitas sesi. Jika attach tidak menemukan sasaran, pastikan nama sesi dan server benar serta sesinya belum berakhir. Server tmux milik akun lain atau socket lain tidak otomatis menjadi server yang sama.

Perintah dan pintasan utama

Perintah atau tombol Kegunaan
new -s NAMA Membuat sesi bernama NAMA.
ls Menampilkan sesi pada server tmux yang dipakai.
attach -t NAMA Menyambungkan klien ke sesi yang dipilih.
detach Memisahkan klien dari sesi.
split-window Membuat panel tambahan dengan membagi panel yang aktif.
Prefiks, lalu c Membuat jendela baru.
Prefiks, lalu % Membagi panel menjadi bagian kiri dan kanan.
Prefiks, lalu " Membagi panel menjadi bagian atas dan bawah.

Perintah pada lima baris pertama dipanggil melalui tmux, misalnya tmux ls pada contoh sebelumnya. Prefiks bawaan untuk pintasan adalah Ctrl+b. Setelah membagi panel, prefiks diikuti tombol arah dapat memindahkan panel aktif. Masukan ketikan dikirim ke program pada panel aktif, jadi perhatikan panel yang dipilih.

Istilah, perintah, dan pintasan dijelaskan dalam panduan resmi awal penggunaan tmux. Rincian versi dan konfigurasi tersedia pada manual tmux.

Bedakan pemisahan dan pengakhiran pekerjaan

Untuk meninggalkan tampilan sambil mempertahankan sesi, gunakan pemisahan klien. Mengetik exit di shell dalam panel justru mengakhiri shell itu; pada pengaturan biasa, ketika program panel terakhir dan jendela terakhir berakhir, sesi juga berakhir. Selesaikan atau simpan pekerjaan sebelum sengaja mengakhiri shell.

Tmux tidak menyimpan seluruh keadaan proses untuk dipulihkan setelah reboot. Kebijakan pengelolaan pengguna pada server juga dapat mengakhiri proses ketika pengguna keluar. Untuk layanan yang harus dikelola terus-menerus, gunakan pengelola layanan sesuai kebijakan server; jangan mengandalkan nama sesi tmux sebagai jaminan ketahanan.

FAQ

Apakah sesi tmux selalu bertahan ketika SSH terputus?

Sesi dapat tetap tersedia bila server tmux, program sesi, dan sistem tetap berjalan serta kebijakan server tidak mengakhirinya. Pemisahan koneksi tidak menyediakan pemulihan setelah reboot atau berakhirnya sesi.

Mengapa tmux new -s work gagal?

Salah satu penyebabnya adalah nama work sudah dipakai. Periksa daftar sesi dan pesan kesalahan. Sambungkan ke sesi yang benar atau pilih nama baru untuk latihan tanpa menghapus pekerjaan yang sudah ada.