Có một tmux tương đương với màn hình -D -R '


13

Tôi muốn biết nếu có một cách để tmuxhành xử như screen -D -Rvậy để tôi có thể nói, có lệnh như một lệnh mặc định trong Putty.

Các screencông tắc này sẽ buộc tách phiên phiên hiện có cho người dùng của tôi (ngay cả khi nó vẫn đang hoạt động và đăng nhập ở một nơi khác) và gắn lại nó vào phiên hiện tại. Ngoài ra, trong trường hợp không có phiên màn hình nào tồn tại, nó sẽ tạo một phiên mới.

Tôi thích tmux và có thể thấy những lợi ích rõ ràng trên màn hình, nhưng sự tồn tại của tính năng này sẽ thực sự đóng dấu thỏa thuận.

tmux attach dường như không tạo ra một phiên mới nếu không có phiên nào.

Trang người đàn ông cho tmux nói:

Nếu không có máy chủ nào được khởi động, phiên đính kèm (đính kèm) sẽ cố gắng khởi động nó; điều này sẽ thất bại trừ khi các phiên được tạo trong tệp cấu hình.

Phần in đậm có nghĩa là gì? (Tôi không thể tìm thấy một ví dụ về việc tạo phiên trong tệp conf).


Từ trang man: " Tệp cấu hình là một tập hợp các tmuxlệnh được thực thi theo trình tự khi máy chủ được khởi động lần đầu tiên. " - bạn thực sự có thể có attachhoặc new-sessionnhư một dòng trong .tmux.conf.
sr_

@sr_ Chà, khi máy chủ được khởi động lần đầu tiên new-sessionthì dù sao cũng sẽ xảy ra ...
Chris Down

Chỉ tìm thấy câu hỏi (đóng) này trên SO. Câu hỏi tương tự với câu trả lời tương tự. stackoverflow.com/q
43232536/168034

Câu trả lời:


15

Đúng:

$ tmux attach -d || tmux new

-dlà cần thiết để hành xử như screen -D, tức là tách rời mọi người khác.

Kết nối bằng ssh, sau đó đính kèm hoặc tạo có thể là một cái gì đó như:

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

$ stmux my.remote.box

1
Có - đây dường như là cách hiệu quả nhất để đạt được những gì tôi yêu cầu. Tương tự, tôi không chấp nhận new-sessiontrong tệp cấu hình trong trường hợp bạn muốn chỉnh sửa và tải lại trong phiên tmux.
Geeb

4

Để tmux attachtạo một phiên mới khi không có phiên nào, hãy sử dụng tùy chọn new-sessiontrong tệp cấu hình tmux. Tạo tập tin ~/.tmux.confnếu nó không tồn tại và thêm

new-session

với nó Ngoài ra, tôi bí danh tmuxđể tmux attach:)


1
Tôi không muốn có new-sessiontrong ~/.tmux.confvì nếu tôi tải lại cấu hình bằng lệnh source-file ~/.tmux.conf(xem này ) một phiên làm việc mới sẽ được đưa ra. Vâng, tôi có thể giết nó và sau đó gắn vào cái trước nhưng điều đó hơi khó chịu.
mmoya

3

Bạn có thể mô phỏng điều này với hàm shell, cái này sẽ hoạt động với mọi shell tương thích POSIX:

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
}

Bây giờ nếu bạn khởi chạy nó tmux -z, nó sẽ thực hiện các hành động bạn đang tìm kiếm.


2

cái này hoạt động tốt hơn một chút đối với tôi:

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

1

Tôi thấy điều này hoạt động tốt nhất với tôi trên .bashrc

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

Làm thế nào mà giải thích phần in đậm trong OP?
Anthon

0

Nếu bạn đang sử dụng tệp này trong tệp .shrc hoặc tương tự với exectôi khuyên dùng

if tmux ls
  exec tmux attach
else
  exec tmux
fi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.