Làm cho màn hình GNU tồn tại khi khởi động lại


18

Tôi đang sử dụng màn hình GNU rất nhiều. Tôi thấy rất khó chịu khi mỗi lần máy chủ phải khởi động lại tôi lại mất tất cả các phiên của mình (ngay cả khi tôi biết trước, tôi cần phải thiết lập lại mọi thứ).

Tôi đã tìm kiếm trên web các khả năng làm thế nào để làm cho màn hình tồn tại khi khởi động lại, nhưng không tìm thấy gì phù hợp với tôi. Một số phương pháp tôi tìm thấy và có sai sót:

  • CryoPID : dường như đã chết, hứa hẹn từ năm 2005 sẽ bao gồm hỗ trợ cho màn hình
  • DMCTP : có vấn đề với setuid (), không hoạt động với tôi (tôi thừa nhận tôi đã không cố gắng rất nhiều)
  • một số kịch bản cố gắng tạo lại phiên từ đầu; bạn vẫn mất lịch sử của mình và tôi cũng nghĩ rằng các biến môi trường không được đặt chính xác (và khi tôi thử, nó không hiển thị tất cả các phiên)

Có lẽ ai đó biết một số tủ đông quá trình tốt hơn? Đây dường như là cách hứa hẹn nhất.


Có lẽ bạn nên ngủ đông thay vì khởi động lại :-) Tôi nhớ đã sử dụng DMCTP từ rất lâu rồi và nó đã hoạt động (IIRC, nhưng tôi không chắc chắn ...)
sloth

1
Vâng, trong hầu hết các trường hợp, các bản cập nhật kernel hoặc thay thế phần cứng của nó buộc phải khởi động lại. (Dù sao thì điều đó không phụ thuộc vào tôi ...) - DMCTP: Sẽ quan tâm đến cách làm cho nó hoạt động mà không cần biên dịch lại màn hình (như được đề xuất trên Internet).
fuenfundachtzig

1
Tôi đang sử dụng tmux thay vì màn hình và thấy việc viết kịch bản phiên dễ dàng hơn. Điều đó không "lưu" phiên của bạn nhưng bạn có thể dễ dàng gửi lệnh đến tmux để thực hiện bố cục của mình và gửi 'các nét chính' cho khách hàng để bạn có thể thay đổi thư mục và khởi chạy ứng dụng nếu cần. Tôi chắc chắn bạn cũng có thể làm điều đó trên màn hình, nhưng nó có vẻ dễ dàng hơn với tmux

Câu trả lời:


13

Không có cách nào để lưu một phiên màn hình theo cách mà bạn mong muốn. Những gì tôi đã làm là điều tốt nhất tiếp theo: tự động viết kịch bản để kết nối với máy chủ của tôi và thiết lập giàn khoan của tôi theo cách tôi thích.

Yêu nó.

Kết nối cục bộ xuống, tôi chờ, nó sẽ hoạt động trở lại và có công việc của tôi (tôi sử dụng màn hình lồng nhau). Máy chủ ngừng hoạt động hoặc khởi động lại, tôi chờ và trở lại vị trí mặc định của mình. Điều này mang lại cho tôi cảm giác liên tục mà tôi mong muốn.

Dù sao, tôi đã hỏi câu hỏi chính xác này nhiều năm trước trong danh sách màn hình.

Tóm tắt: Tìm kiếm cuộc sống không vĩnh cửu cho màn hình. Thay vào đó hãy học cách hồi sinh.

Đây là phần cốt lõi của cấu hình .screenrc:

Có một ví dụ, rscreen, trong gói autossh mà tôi đã sửa đổi thành chương trình kết nối.

Tham số --esc là đặt lối thoát màn hình từ xa thành một thứ khác (lối thoát của tôi là `)

#add much much more scrollback
defscrollback 10000

# make some default windows

screen -t ADMIN     1
chdir /Users/chiggsy/Sites/
screen -t SITES    2
chdir /Users/chiggsy/src/
screen -t SRC 3
chdir
screen -t FERGUS  4 /Users/chiggsy/bin/econnect --host host.example.com --port 50000 --esc g --user sol
screen -t LAEG 5  /Users/chiggsy/bin/econnect --host host.example2.com --port 505000  --esc g --user invictus

screen -t ROOT      0   sudo su -m

2

Xem: http://skoneka.github.io/screen-session/

Available screen-session modes: 

---- 
save              - save Screen ( and VIM ) session 
load              - load session 
ls                - list saved sessions 
---- 

dump              - print detailed informations about windows in the session 
group             - move windows to a group 
layoutlist        - display a list of layouts 
layout-checkpoint - record a snapshot of the current layout. 
layout-history    - display saved snapshots of the current layout 
layout-redo       - load a snapshot of the current layout, 
layout-undo       - load a snapshot of the current layout, 
layout-zoom       - zoom into and out of a region 
kill              - send SIGTERM to last the process started in a window 
kill-zombie       - kill all zombie windows in the session 
kill-group        - recursively kill all windows in a group 
manager           - sessions manager (screenie like) but featuring session 
                    preview in a split window 
nest-layout       - copy a layout to the current region 
new-window        - start a new Screen window in the same working directory 
                    on the position next to the current window 
name              - get or set the sessionname 
regions           - display a number in every region (like tmux display-panes) 
renumber          - renumber windows to fill gaps 
subwindows        - recursively print windows contained in groups 

2

Trên Server Fault, cùng một câu hỏi đã nhận được một gợi ý bị thiếu ở đây: sử dụng tmuxvới tmux-resurrect , đó là:

Khôi phục tmuxmôi trường [s] sau khi khởi động lại hệ thống.

Những gì nó có thể khôi phục cho bạn:

  • tất cả các phiên, cửa sổ, panes và thứ tự của họ
  • thư mục làm việc hiện tại cho mỗi khung
  • bố trí khung chính xác trong các cửa sổ (ngay cả khi thu phóng)
  • phiên hoạt động và thay thế
  • cửa sổ hoạt động và thay thế cho mỗi phiên
  • cửa sổ tập trung
  • khung hoạt động cho mỗi cửa sổ
  • "phiên nhóm" (tính năng hữu ích khi sử dụng tmux với nhiều màn hình)
  • các chương trình đang chạy trong một khung! Thêm chi tiết trong tài liệu chương trình phục hồi .
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.