tự động bắt đầu màn hình


3

Tôi muốn tự động khởi động màn hình gnu khi tôi đăng nhập vào máy từ xa thông qua ssh, vì vậy tôi thêm

exec screen

đến cuối tệp .bash_profile, sau đó tôi phát hiện ra rằng khi tôi chấm dứt sàng lọc, kết nối của tôi với máy chủ ssh cũng bị đóng ngay lập tức. Làm thế nào tôi có thể tránh điều này?

Trong trường hợp tôi muốn tiếp tục lại màn hình (ví dụ như 'màn hình cũ'), bởi vì tôi bắt đầu sàng lọc mỗi khi đăng nhập, tôi phải đối mặt với một tình huống mà tôi bị gắn vào 'màn hình mới' và tôi muốn gắn lại vào "Màn hình cũ". Nếu tôi chỉ

screen -r old-screen

Tôi thấy mình trong một màn hình đệ quy và tôi không thể điều hướng trong 'màn hình cũ' vì tất cả các phím tắt được nhận bởi 'màn hình mới'. Nếu tôi cố thoát khỏi màn hình hiện tại, kết nối của tôi với máy từ xa cũng sẽ bị mất ngay lập tức.

Bất kỳ giải pháp cho nó?


Nếu bạn trao đổi -r với -R nó sẽ tạo một phiên màn hình mới cho bạn nếu không có gì để tiếp tục.
Svish

đặt 'exec screen -R' trong .bash_profile giải quyết vấn đề của tôi. cám ơn
zhanwu

@Svish: Vui lòng gửi đề xuất của bạn dưới dạng câu trả lời để zhanwu có thể chấp nhận nó.
Dennis Williamson

Đã thêm nó dưới dạng câu trả lời :)
Svish

Câu trả lời:


6

Thay vì sử dụng screen -r mà cố gắng tiếp tục một phiên màn hình, bạn có thể sử dụng screen -R trong đó cố gắng tiếp tục một phiên màn hình và tạo một phiên mới nếu không tồn tại.

   -r [pid.tty.host]
   -r sessionowner/[pid.tty.host]
        resumes  a detached screen session.  No other options (except com-
        binations with -d/-D) may be specified, though an optional  prefix
        of  [pid.]tty.host  may  be needed to distinguish between multiple
        detached screen sessions.  The second form is used to  connect  to
        another  user's  screen session which runs in multiuser mode. This
        indicates that screen should look for sessions in  another  user's
        directory. This requires setuid-root.

   -R   attempts to resume the first detached screen session it finds.  If
        successful, all other command-line options  are  ignored.   If  no
        detached  session exists, starts a new session using the specified
        options, just as if -R had not been specified. The option  is  set
        by default if screen is run as a login-shell (actually screen uses
        "-xRR" in that case).  For combinations with the -d/-D option  see
        there.

Cá nhân tôi có xu hướng sử dụng screen -DRA.

   -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.
   -A      Adapt  the  sizes of all windows to the size of the current termi-
           nal.  By default, screen tries to restore  its  old  window  sizes
           when  attaching  to  resizable  terminals  (those with "WS" in its
           description, e.g. suncmd or some xterm).

2

Những điều sau đây có vẻ hiệu quả với tôi trong: ~ / .bash_profile

## if $STY is not set...
if [ -z "$STY" ]; then
    screen  -d -RR
fi

Tôi lấy câu trả lời từ đây: https://superuser.com/a/52329/76204

nhưng thay vì tạo một màn hình mới mỗi lần nó lại cài đặt một phiên hoặc tạo một màn hình nếu cần thiết. Ngoài ra, dường như không có kết nối ssh nào thoát khi màn hình được gắn lại hoặc đóng lại.


Nếu bạn phá vỡ .screenrc, hoặc là /etc/screenrc? Ít nhất nếu bạn gỡ cài đặt màn hình, thì trình thực thi sẽ thất bại và trình bao của bạn sẽ không thoát, nhưng nó sẽ nếu màn hình chạy nhưng chỉ thoát khi có lỗi.
Peter Cordes

Tôi đã không gặp phải điều đó trong hơn 5 năm qua trên 50 máy ảo + thực. Trong trường hợp đó, tôi đoán tôi sẽ phải khởi động một iso trực tiếp và nhận xét các dòng vi phạm trong tệp ~ / .bash_profile.
drescherjm

Vâng, có vẻ như không thể. Nếu một người dùng khác trên máy có tài khoản không bị hỏng hoặc nếu có mật khẩu root (thay vì chỉ sudo), bạn có thể sửa nó theo cách đó.
Peter Cordes

2
Nếu bạn phá vỡ .screenrc của bạn, chỉ cần ssh ip "bash --noprofile"
Andre Terra

1

Bản thân tôi thường suy ngẫm điều tương tự.

Cách gần nhất tôi nghĩ ra là chạy màn hình như một phần của lệnh ssh để kết nối với máy chủ từ xa:

$ ssh -t foo@bar.com screen -r

hoặc nhập PuTTY screen -r vào Remote command hộp tùy chọn SSH.

Tôi có xu hướng bí danh một số lệnh ssh cho các máy chủ khác nhau và các phiên màn hình khác nhau.


Đây là những gì tôi sử dụng. Có vẻ như là một ý tưởng tốt hơn so với hack .bash_profile để luôn chạy màn hình.
Peter Cordes

0

Hệ điều hành của bạn có thể hỗ trợ chuyển đổi dòng lệnh với định nghĩa lệnh shell trong tham số "đăng nhập" cho tài khoản của bạn không? Nếu vậy, hãy thử thay đổi nó thành:

  • / path / to / bash -c "screen -R"
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.