Reattach hoặc tạo một phiên màn hình có tên? (hoặc phiên màn hình liên tục)


27

Về cơ bản tôi có một phiên màn hình từ xa mà tôi muốn tự động gắn lại vào .. Hiện tại tôi đang thực hiện việc này bằng lệnh sau (dưới dạng dấu trang iTerm hoặc bí danh)

ssh host -t screen -x thesessionname

Điều này hoạt động tốt, nhưng nếu phiên chết vì bất kỳ lý do gì, tôi muốn nó được tạo lại khi tôi kết nối tiếp theo. Các -Rlá cờ cho screengần như hoàn hảo:

ssh host -t screen -R -S thesessionname

..nhưng nếu phiên đã được đính kèm, phiên thứ hai sẽ được thực hiện (vì -Rtrông đơn giản cho phiên tách rời đầu tiên, nếu không tìm thấy phiên nào thì nó sẽ tạo phiên mới)

Có cách nào để làm cho -Rcờ tìm kiếm các phiên đính kèm không và chỉ tạo một phiên mới nếu thesessionnamekhông tồn tại?

Nếu điều này không dễ thực hiện, làm thế nào tôi có thể tự động tạo lại phiên màn hình khi nó chết? Có lẽ một tập lệnh chạy qua cron tìm kiếm phiên được đặt tên, tạo ra nó không nên tồn tại?

Câu trả lời:


32

Yêu cầu màn hình kiên trì hơn một chút về việc thử:

-D -R
    Attach here and now. In detail this means: If a session is run-
    ning,  then  reattach.  If necessary detach and logout remotely
    first.  If it was not running create it and  notify  the  user.
    This is the author's favorite.

Vì vậy, kết hợp cả hai và bạn sẽ có giải pháp của mình ("-DR" tương đương với "-D -R"):

screen -DR <yoursession> 

Ngoài ra và hữu ích để biết, bạn có thể xem các phiên chạy với:

screen -ls

5
Hoàn hảo, screen -x -R -S mainlà những gì tôi đã kết thúc bằng cách sử dụng (hoạt động tương tự mà không cần tách rời), cảm ơn!
dbr

Đôi khi bạn muốn sử dụng sceen -r <yoursession>, sẽ báo lỗi khi nó đã được đính kèm (thay vì tạo một phiên mới).
nguy hiểm89

11

Một vài lựa chọn tốt. Đầu tiên, yêu thích của tôi:

screen -x -R

Điều đó sẽ đính kèm với phiên màn hình đầu tiên khả dụng (chia sẻ nếu kết nối khác được kết nối) và nếu không có phiên màn hình nào, hãy bắt đầu một phiên bản mới.

screen -d -RR

Tài liệu cho câu nói "Gắn lại một phiên và nếu cần tách ra hoặc tạo nó. Sử dụng phiên đầu tiên nếu có nhiều hơn một phiên." Về cơ bản, double-R làm cho nó tìm phiên đầu tiên để đính kèm.

screen -D -RR

"Đính kèm ở đây và ngay bây giờ. Dù điều đó có nghĩa là gì, cứ làm đi." Sẽ tách ra và đăng xuất từ ​​xa bất kỳ phiên đính kèm nào khác và đính kèm vào phiên đầu tiên có thể. Về cơ bản, làm bất cứ điều gì nó cần làm để gắn vào một phiên hiện có và tạo một phiên mới nếu không có gì ở đó.

Đầu tiên (-x -R) ít có khả năng gây ra sự cố nhất (sẽ không làm mất kết nối khác của bạn) nhưng chỉ đơn giản là luôn gắn vào thứ gì đó nếu có bất cứ thứ gì để gắn vào và tạo ra thứ gì đó nếu không có gì để gắn vào.


1
Đây là tất cả các tùy chọn tốt / tiện dụng, nhưng không ai trong số họ trả lời câu hỏi ban đầu, đó là (kết nối lại) với một phiên theo tên .
Daniel

5

tôi sử dụng

screen -dRRS sessname

Tôi không muốn toàn bộ thông tin đăng nhập của mình trên shell khác bị rớt -D, và tôi chắc chắn không muốn chế độ đa đính kèm -x.

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.