Próbuję dowiedzieć się, jak dołączyć do, tmux session
jeśli istnieje nazwana sesja tmux, jeśli nie, chcę utworzyć nową o podanej nazwie.
Obecnie znam kilka tmux
poleceń, które mogą częściowo osiągnąć to, czego szukam, ale nie jest jasne, jak je połączyć, aby uzyskać to, czego szukam:
tmux attach
dołącza do automatycznie istniejącej sesji - ale błędy są wyświetlane, jeśli nie ma sesjitmux new
tworzy nową sesję - ale robi to za każdym razem, więc nie mogę jej zostawić w swoim.tmux.conf
tmux has-session
sprawdza, czy sesja istnieje - ale nie wiem, jak ją połączyć z innymi poleceniami
Dlatego chciałbym utworzyć skrypt tmux, aby działo się to automatycznie, zamiast tworzyć go ręcznie za każdym razem, gdy muszę logować się do sesji.
Jak mogę napisać automatyczny skrypt, aby utworzyć nową sesję tmux (jeśli dana nazwa sesji nie istnieje) lub dołączyć do nazwy sesji (jeśli istnieje)?
man tmux
mówi: „Flaga -A powoduje, że nowa sesja zachowuje się jak sesja dołączania, jeśli nazwa-sesji już istnieje”Odpowiedzi:
Alternatywnie możesz dodać
do twojego
.tmux.conf
- spowoduje to utworzenie domyślnej sesji przy starcie serwera.Następnie
tmux attach
albo połączy się z bieżącą sesją (to znaczy działającym serwerem), albo utworzy nową sesję (uruchom serwer, przeczytaj plik konfiguracyjny, wydanew-session
polecenie) i dołącz do niej.źródło
new-session
niszczy, wydaje się, że jest to prawdziwy problem.source-file ~/.tmux.conf
)-A
opcji,new-session
jeśli nazwiesz swoją sesję.new-session -A -s mysession
będzie się dobrze bawić przy przeładowywaniu konfiguracji.Rozgryzłem to ( i wskazałem mi ).
źródło
tmux attach-session -t my-session || tmux new-session -s my-session
. Jedynym problemem jest to, że nie jest to atomowe. tmux naprawdę powinien mieć polecenie tworzenia lub dołączania.alias tm='tmux attach || tmux new'
tmux attach -t some_name || tmux new -s some_name
. Zmień some_name na $ 1, dodaj shebang i zapisz.new
vsnew-session
: są synonimami, podobnie jakattach
iattach-session
.tmux new-session -ds default \; split-window -dv 2>/dev/null; tmux attach -t default
działa znacznie lepiej i nie otwiera drugiego tmuxa na wypadek, gdybyś/bin/kill
był pierwszym. Jedynym minusem jest to, że w tym celu musisz nazwać sesje.Jak wskazano w komentarzach Petra Viktorina , jkoelkera i pjincza , możesz użyć następującego polecenia, aby dołączyć do,
mySession
jeśli istnieje, i utworzyć je, jeśli tak nie jest:Od
man tmux
:new-session
obsługuje-A
od tmux-1.8 .źródło
gnome-terminal
jak polecenie, sugerowałbym pozostawienie-s
i konkretną nazwę sesji, aby nie kończyć KAŻDEJ nowejgnome-terminal
sesji dołączonej do tej samej sesji. Zawsze możesz wybrać istniejącą sesjęprefix + s
po otwarciu nowego terminala.Chociaż uważam, że odpowiedź rampion jest wystarczająca do korzystania z 1 sesji, ten skrypt pozwala skonfigurować wiele sesji:
UWAGA:
źródło
Dostosowując się do sugestii Alexa, aby podczas uruchamiania uwzględnić konfigurację opartą na projektach, zacząłem używać następujących elementów:
gdzie
tmux-myproject.conf
jest moja startowa seria poleceń tmux, aby utworzyć moje okna i panele, a także uruchomić moje edytory.źródło
Używam aliasu, aby w razie potrzeby utworzyć nową sesję i dołączam do mojej sesji domyślnej, jeśli już istnieje:
Dodałem to do mojego .login na moim serwerze.
Powodem, dla którego robię to w ten sposób, jest to, że nie chcę łączyć się z tą samą rzeczywistą sesją, chcę nową sesję, która używa tej samej grupy okien.
Jest to również podobne do biegania
screen -xRR
.źródło
tmux list-sessions
.tmux new -A -s default
aby uruchomić nową sesję, jeśli nie istnieje, lub dołączyć automatycznie. Myślę, że to znacznie lepsze niż edycja pliku konfiguracyjnego.Dla tych, którzy chcą zrobić to samo w
fish
:źródło