Tmux eşdeğeri “screen -D -R” var mı?


13

Putty'de varsayılan bir komut olarak komutun olduğunu söyleyebileceğim tmuxgibi davranmanın bir yolu olup olmadığını bilmek istiyorum screen -D -R.

Bu screenanahtarlar, kullanıcı için mevcut bir ekran oturumunun ayrılmasını zorlar (hala etkin ve başka bir yerde oturum açmış olsa bile) ve geçerli oturuma yeniden bağlar. Ayrıca, hiçbir ekran oturumu mevcut değilse, yeni bir oturum oluşturacaktır.

Ben tmux seviyorum ve ekran üzerinde net faydaları görebilirsiniz, ancak bu özelliğin varlığı gerçekten anlaşma mühür.

tmux attach yoksa yeni bir oturum oluşturmuyor gibi görünüyor.

Tmux için adam sayfası diyor:

Hiçbir sunucu başlatılmazsa, attach-session (attach) başlatmayı dener; yapılandırma dosyasında oturumlar oluşturulmadıkça bu başarısız olur.

Kalın harflerle yazılmış bölüm ne anlama geliyor? (Conf dosyasında oturum oluşturma örneği bulamıyorum).


Man sayfasından: " Yapılandırma dosyası, tmuxsunucu ilk başlatıldığında sırayla yürütülen bir komutlar kümesidir . " - gerçekte attachveya new-sessioniçinde bir satır olabilir .tmux.conf.
sr_

@sr_ Peki, sunucu ilk başlatıldığında new-sessionzaten olur ...
Chris Down

Sadece SO üzerinde bu (kapalı) soru bulundu. Benzer cevaplarla aynı soru. stackoverflow.com/q/3432536/168034
phunehehe

Yanıtlar:


15

Evet:

$ tmux attach -d || tmux new

-dscreen -Dyani herkes gibi davranmak gerekir .

Ssh ile bağlanın, sonra ekleyin veya oluşturun gibi bir şey olabilir:

$ cat bin/stmux
#!/bin/sh
exec ssh -t $@ 'tmux attach -d || tmux new'

$ stmux my.remote.box

1
Evet - istediğim şeyi elde etmenin en etkili yolu gibi görünüyor. Aynı şekilde, new-sessionbir tmux oturumu sırasında yeniden düzenlemek ve yeniden yüklemek istediğinizde yapılandırma dosyasını onaylamıyorum .
Geeb

4

Bir tmux attachoturum olmadığında yeni bir oturum oluşturmak için new-session, tmux yapılandırma dosyasındaki seçeneği kullanın . ~/.tmux.confVarsa dosyayı oluşturun ve ekleyin

new-session

ona. Ayrıca, takma tmuxiçin tmux attach:)


1
Ben almamayı tercih new-sessionde ~/.tmux.confben komutunu kullanarak yapılandırmayı yeniden çünkü eğer source-file ~/.tmux.conf(bkz bu ) yeni bir oturum başlatılacak. Evet, onu öldürebilir ve bir öncekine yapıştırabilirim ama bu biraz sinir bozucu.
mmoya

3

Bunu kabuk işleviyle taklit edebilirsiniz, bu POSIX uyumlu kabuklar için çalışmalıdır:

tmux() {
    if [ "$#" -ge 1 ] && [ "$1" = -z ]; then
        shift
        command tmux detach 2>/dev/null
        command tmux attach "$@" || command tmux new-session "$@"
    else
        command tmux "$@"
    fi
}

Şimdi olarak başlatırsanız tmux -z, aradığınız eylemleri gerçekleştirmesi gerekir.


2

bu benim için biraz daha iyi çalışıyor:

tmux new-session -AD -s <session-name>

1

Bunun benim için en uygun olduğunu düşünüyorum .bashrc

if [[ -z $TMUX ]]; then
  tmux attach-session || tmux new-session
fi

Bu OP'deki cesur kısmı nasıl açıklıyor?
Anthon

0

Bunu bir .shrc dosyası veya benzeri bir dosyada kullanıyorsanız, exectavsiye ederim

if tmux ls
  exec tmux attach
else
  exec tmux
fi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.