
tmux ve screen: SSH Oturumlarını Kalıcı Hale Getirme
SSH bağlantısı koptuğunda yarım kalan işlemlere son: tmux ve screen ile sunucuda kalıcı, kesintisiz terminal oturumları nasıl açılır, adım adım anlatıyoruz.
tmux ve screen: SSH Oturumlarını Kalıcı Hale Getirme
Uzak bir Linux sunucusuna SSH ile bağlanıp saatler sürecek bir yedekleme işlemi başlattığınızı, büyük bir veritabanı dökümünü aktardığınızı ya da uzun bir derleme (build) sürecini tetiklediğinizi düşünün. İşlem devam ederken internet bağlantınız kesilir, dizüstü bilgisayarınız uykuya geçer ya da VPN bağlantınız düşer. SSH oturumu koptuğu anda terminalinizle birlikte çalışan komut da sonlanır — saatlerce süren işlem yarım kalır, baştan başlamanız gerekir.
Bu, Linux sunucularıyla çalışan herkesin er ya da geç karşılaştığı klasik bir sorundur. Çözüm ise oldukça eskilere dayanan ama hâlâ vazgeçilmez iki araçta gizli: screen ve tmux. Bu iki terminal çoklayıcı (terminal multiplexer), SSH bağlantınızdan bağımsız olarak sunucu üzerinde çalışmaya devam eden oturumlar oluşturmanızı sağlar. Bağlantınız kesilse bile işleminiz arka planda çalışmaya devam eder, siz de daha sonra kaldığınız yerden aynı oturuma geri dönebilirsiniz.
Bu yazıda tmux ve screen'in ne olduğunu, aralarındaki farkları, temel komutlarını ve gerçek sunucu yönetimi senaryolarında nasıl kullanılacağını adım adım ele alacağız.
tmux ve screen nedir, hangi problemi çözer
SSH ile bir sunucuya bağlandığınızda, açtığınız terminal oturumu aslında sunucu üzerinde çalışan bir kabuk (shell) sürecine (process) bağlıdır. SSH bağlantısı koptuğunda bu sürece bir SIGHUP sinyali gönderilir ve normal şartlarda o kabuğun altında çalışan tüm foreground işlemler de sonlanır. Temel SSH bağlantısı mantığını bilmek burada işinize yarayacaktır çünkü sorun tam olarak bu noktada ortaya çıkar: terminal kapanınca iş de kapanır.
Terminal multiplexer (terminal çoklayıcı) kavramı tam olarak bu sorunu çözmek için tasarlanmıştır. tmux veya screen çalıştırdığınızda, sunucu üzerinde sizin SSH bağlantınızdan bağımsız, kendi başına yaşayan bir oturum oluşturulur. Siz bu oturuma "bağlanırsınız" (attach), istediğiniz zaman "ayrılırsınız" (detach) ama oturumun kendisi ve içinde çalışan işlemler sunucu üzerinde çalışmaya devam eder. SSH bağlantınız kopsa, bilgisayarınızı kapatsanız bile, tekrar bağlandığınızda tmux attach veya screen -r ile tam olarak bıraktığınız yere geri dönersiniz.
Bu, aslında nohup veya & ile arka plana atma gibi tekniklerden farklı bir yaklaşımdır — süreç yönetiminin diğer yollarını ve ps, kill, systemctl gibi araçları merak ediyorsanız Linux süreç yönetimi yazımıza bakabilirsiniz. tmux ve screen'in farkı, sadece işlemi arka plana atmak değil, tam etkileşimli bir terminal oturumunu canlı tutmasıdır — yani geri döndüğünüzde ekran çıktısını, imleç konumunu, açık olan tüm pencereleri olduğu gibi görürsünüz.
Büyükweb'de destek ekibimize gelen en yaygın "işlem yarıda kaldı, ne oldu" sorularının büyük kısmı, kullanıcının uzun süren bir işlemi çıplak bir SSH oturumunda çalıştırıp bağlantısının kopmasından kaynaklanıyor. tmux ya da screen alışkanlığı bu sorunun neredeyse tamamını ortadan kaldırıyor.
screen: klasik ve her yerde bulunan çözüm
screen, 1980'lerin sonundan beri var olan, neredeyse her Linux dağıtımında ya kurulu gelen ya da tek komutla kurulabilen bir araçtır. Basitliği ve yaygınlığı en büyük avantajıdır.
Kurulum genellikle şu şekildedir:
# Debian/Ubuntu tabanlı sistemlerde
sudo apt install screen
# RHEL/CentOS/AlmaLinux tabanlı sistemlerde
sudo yum install screen
Yeni, isimlendirilmiş bir oturum başlatmak için:
screen -S yedekleme
Bu komut sizi yeni bir screen oturumunun içine alır. Burada normal terminalde yaptığınız her şeyi yapabilirsiniz — örneğin uzun sürecek bir rsync komutu çalıştırabilirsiniz:
rsync -avz /var/www/site/ /mnt/yedek/site/
İşlem devam ederken oturumdan ayrılmak (ama işlemi durdurmadan) için klavye kısayolu Ctrl+a sonra d tuşuna basmaktır (detach). Terminale şu şekilde bir mesaj düşer:
[detached from 12345.yedekleme]
Artık SSH bağlantınızı güvenle kapatabilir, bilgisayarınızı kapatabilirsiniz. rsync işlemi sunucu üzerinde çalışmaya devam eder. Daha sonra tekrar SSH ile bağlandığınızda, çalışan oturumları listelemek için:
screen -ls
Çıktı şuna benzer:
There is a screen on:
12345.yedekleme (Detached)
1 Socket in /run/screen/S-root.
Ve tekrar bağlanmak için:
screen -r yedekleme
screen içinde birden fazla pencere de açabilirsiniz: Ctrl+a c yeni bir pencere oluşturur, Ctrl+a n sonraki pencereye, Ctrl+a p önceki pencereye geçer, Ctrl+a " açık pencerelerin listesini gösterir.
tmux: modern ve daha esnek alternatif
tmux, screen'den çok daha sonra ortaya çıkmış ve zamanla onun yerini büyük ölçüde alan bir araçtır. Aktif geliştirilmesi, daha esnek pencere/pane (bölme) yönetimi ve daha okunabilir bir yapılandırma dosyası sayesinde günümüzde sistem yöneticilerinin çoğunluğu tarafından tercih edilir.
Kurulum:
sudo apt install tmux
# veya
sudo yum install tmux
tmux'ta temel kavram üçlüdür: session (oturum), window (pencere, screen'deki pencereye benzer) ve pane (bir pencere içinde bölünmüş alt bölme — tmux'a özgü, screen'de yoktur).
Yeni bir isimlendirilmiş oturum başlatmak:
tmux new -s izleme
Oturumdan ayrılmak (detach): Ctrl+b sonra d
Çalışan oturumları listelemek:
tmux ls
Tekrar bağlanmak:
tmux attach -t izleme
tmux'ın en güçlü yanı pane (bölme) desteğidir. Aynı pencereyi dikey veya yatay olarak bölerek tek ekranda birden fazla işlemi aynı anda görebilirsiniz:
Ctrl+b %— pencereyi dikey olarak böler (yan yana iki pane)Ctrl+b "— pencereyi yatay olarak böler (alt alta iki pane)Ctrl+bsonra ok tuşları — pane'ler arasında geçiş yapar
Örneğin bir sunucu bakımı sırasında sol pane'de htop ile sistem yükünü izlerken, sağ pane'de log dosyasını tail -f ile takip edebilir, üçüncü bir pane'de asıl işleminizi (örneğin bir migration script'i) çalıştırabilirsiniz — hepsi tek SSH oturumu, tek ekranda.
# Yeni pencere açmak
Ctrl+b c
# Oturumu tamamen sonlandırmak
tmux kill-session -t izleme
tmux ve screen karşılaştırması
Her iki araç da temel amacı (SSH bağlantısından bağımsız kalıcı oturum) aynı şekilde çözer, ama kullanım deneyimi ve esneklik açısından farklılaşırlar.
| Özellik | screen | tmux |
|---|---|---|
| Varsayılan kurulu gelme | Çoğu dağıtımda kurulu veya kolay erişilir | Genelde ayrıca kurulmalı |
| Pane (bölünmüş ekran) desteği | Sınırlı / eklenti gerektirir | Yerleşik ve güçlü |
| Yapılandırma dosyası | .screenrc |
.tmux.conf (daha okunabilir) |
| Script/otomasyon ile kontrol | Var ama sınırlı | Zengin komut satırı arayüzü |
| Aktif geliştirme | Durağan, kararlı | Aktif geliştiriliyor |
| Öğrenme eğrisi | Basit, az komut | Biraz daha fazla kavram (session/window/pane) |
| Oturum paylaşımı (aynı anda birden fazla kullanıcı) | screen -x ile kolay |
tmux attach + -r salt okunur modla mümkün |
Kısacası: elinizdeki sunucuda ne kuruluysa onu kullanmak çoğu zaman yeterlidir. Ama kendi standardınızı belirleyecekseniz, pane desteği ve daha temiz yapılandırma dosyası nedeniyle tmux günümüzde daha yaygın tercih edilen seçenektir.
Pratik kullanım senaryoları
Uzun süren dosya aktarımı ve yedekleme: rsync, scp ya da tar ile büyük veri kümelerini taşırken tmux/screen oturumunda çalıştırmak, ağ kesintisinin işlemi baltalamasını önler.
Veritabanı dökümü/geri yükleme: mysqldump veya pg_dump ile büyük veritabanlarını yedeklerken, işlem saatler sürebilir. Oturumu kalıcı hale getirmek, SSH bağlantınız kesilse bile dökümün tamamlanmasını garanti eder.
Derleme (build) ve kurulum süreçleri: Kaynak koddan derleme, büyük paket kurulumları veya sunucu ilk yapılandırma adımları genellikle uzun sürer. Özellikle yeni kiralanan bir VDS sunucu üzerinde ilk yapılandırmayı yaparken — panel kurulumu, güvenlik duvarı ayarları, servis kontrolleri gibi çok adımlı işlemleri tek bir tmux oturumunda organize etmek, adımları kaybetmeden ilerlemenizi kolaylaştırır.
Paralel izleme: Birden fazla log dosyasını, sistem metriğini veya servisin durumunu aynı anda izlemek istediğinizde tmux'ın pane yapısı gerçek bir zaman kazandırıcıdır. Sistem performansını nasıl izleyeceğinizi merak ediyorsanız bu konuyu sistem performans izleme ve optimizasyon yazımızda daha detaylı işledik.
Script tabanlı otomasyon ile birlikte kullanım: Cron ile zamanlanmış görevlerin aksine, elle tetiklediğiniz ama uzun süren bash script'lerini (örneğin toplu yedekleme, log rotasyonu, deployment script'i) tmux içinde çalıştırmak, script çalışırken terminale müdahale edebilme esnekliği sağlar. Kendi otomasyon script'lerinizi yazmayı öğrenmek isterseniz bash script yazma ve temel otomasyon rehberi yazımıza göz atabilirsiniz.
Yapılandırma ve pratik ipuçları
Her iki araç da varsayılan ayarlarla kullanılabilir, ama küçük yapılandırma değişiklikleri günlük kullanımı ciddi şekilde rahatlatır.
tmux için ~/.tmux.conf örneği:
# Prefix tuşunu Ctrl+b yerine Ctrl+a yap (screen alışkanlığı olanlar için)
set -g prefix C-a
unbind C-b
bind C-a send-prefix
# Fare desteğini aç (pane boyutlandırma, seçim)
set -g mouse on
# Pencere/pane numaralandırmasını 1'den başlat
set -g base-index 1
# Durum çubuğunda saat göster
set -g status-right '%H:%M %d-%b-%y'
screen için ~/.screenrc örneği:
# Alt bilgi çubuğunu göster
hardstatus alwayslastline
hardstatus string '%{= kG}[%{G}%H%{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B}%m/%d %{W}%C%A%{g}]'
# Kaydırma geçmişi (scrollback) boyutu
defscrollback 5000
Birkaç pratik kural:
- Oturumlara anlamlı isimler verin (
tmux new -s migration-db01gibi) — sayısal ID'lerle çalışmak, özellikle birden fazla oturumunuz olduğunda kafa karıştırır. - İşiniz bittiğinde oturumu kapatın. Kalıcı oturum bırakmak kaynak tüketir ve paylaşılan sunucularda karışıklığa yol açabilir;
exitkomutu ya datmux kill-session -t isimile temizlik yapın. screen -lsveyatmux lsalışkanlığı edinin. Sunucuya her bağlandığınızda unutulmuş, arka planda hâlâ çalışan oturum olup olmadığını kontrol etmek iyi bir alışkanlıktır.- Detach kısayolunu ezberleyin. screen'de
Ctrl+a d, tmux'taCtrl+b d— bu iki kısayol muhtemelen en sık kullanacağınız komutlar olacak.
Sunucu yönetiminde en sinir bozucu anlardan biri, saatlerce süren bir işlemin bağlantı kopması yüzünden yarıda kalmasıdır. Büyükweb olarak müşterilerimize her zaman önerdiğimiz basit ama etkili alışkanlık şudur: uzun sürmesi muhtemel her komuttan önce bir tmux veya screen oturumu açın. Saniyeler süren bu adım, saatler süren tekrar çalıştırma zahmetinden kurtarır.
Sıkça Sorulan Sorular
tmux mu screen mi kullanmalıyım?
İkisi de aynı temel problemi (SSH bağlantısından bağımsız kalıcı oturum) çözer. screen daha basit ve neredeyse her sistemde hazır bulunur; tmux ise pane desteği, daha okunabilir yapılandırma ve aktif geliştirme sayesinde günümüzde daha yaygın tercih edilir. Sıfırdan başlıyorsanız tmux öğrenmek uzun vadede daha esnek bir alışkanlık kazandırır.
SSH bağlantım koptuğunda tmux veya screen içinde çalışan işlem durur mu?
Hayır. Oturumu tmux veya screen içinde başlattıysanız, SSH bağlantınız kesilse bile oturum ve içinde çalışan tüm işlemler sunucu üzerinde çalışmaya devam eder. Tekrar bağlandığınızda tmux attach -t isim veya screen -r isim ile kaldığınız yere dönersiniz.
Sunucuda tmux kurulu değilse ne yapmalıyım?
Paket yöneticinizle tek komutla kurabilirsiniz: Debian/Ubuntu tabanlı sistemlerde sudo apt install tmux, RHEL/CentOS/AlmaLinux tabanlı sistemlerde sudo yum install tmux veya sudo dnf install tmux yeterlidir. Kök erişiminiz yoksa sistem yöneticinizden kurulumu talep edebilirsiniz.
Birden fazla tmux oturumunu aynı anda nasıl yönetirim?
tmux ls komutu o an sunucuda açık tüm oturumları isimleriyle listeler. Belirli bir oturuma tmux attach -t oturum-adi ile bağlanabilir, gerekmeyen oturumu tmux kill-session -t oturum-adi ile kapatabilirsiniz. Anlamlı isimlendirme (proje adı, tarih gibi) birden fazla oturumu takip etmeyi kolaylaştırır.
Aynı sunucuda hem screen hem tmux kullanabilir miyim?
Evet, ikisi birbirinden bağımsız çalışır ve aynı sistemde sorunsuz bir arada bulunabilir. Ancak karışıklığı önlemek için genellikle tek bir araçta standartlaşmak, ekip içinde ya da kendi iş akışınızda daha sürdürülebilir olur.
Sunucu yeniden başlatılırsa tmux veya screen oturumu korunur mu?
Hayır. tmux ve screen oturumları işletim sistemi süreçleri olarak çalışır; sunucu yeniden başlatıldığında (reboot) tüm oturumlar ve içlerinde çalışan işlemler sonlanır. Bu araçlar yalnızca SSH bağlantı kopmalarına karşı koruma sağlar, sunucu yeniden başlatmalarına karşı değil. Reboot sonrası otomatik başlaması gereken kalıcı servisler için systemd servis birimleri daha uygun bir çözümdür.
nohup ile tmux/screen arasındaki fark nedir?
nohup komut & da SIGHUP sinyalini yok sayarak işlemi bağlantı kopmasına karşı korur, ama etkileşimli değildir — çıktıyı canlı takip edemez, işlem çalışırken müdahale edemezsiniz. tmux ve screen ise tam bir terminal oturumunu canlı tutar; geri bağlandığınızda ekranı, imleci ve tüm pencereleri tıpkı bıraktığınız gibi görürsünüz. Basit tek komutlar için nohup yeterli olabilir, ama etkileşimli ya da çok adımlı işler için tmux/screen çok daha kullanışlıdır.
Büyükweb Hizmetleri
Uzun süren yedekleme, migration veya kurulum işlemlerini kesintisiz yürütmek için güvenilir bir sunucu altyapısı da en az doğru araçlar kadar önemlidir:
Sorularınız için 0850 302 60 70 numaralı satış öncesi destek numaramızdan bize ulaşabilir veya iletişim sayfası üzerinden bizimle iletişime geçebilirsiniz.
Linux & Komut Satırı İlgili Hizmetlerimiz
Bu yazıda anlatılan teknik konuyu profesyonel altyapıyla deneyimleyin
Etiketler:



