Có phải là một ý tưởng tốt để đặt màn hình -riên vào .bashrc của tôi không?


17

Tôi muốn sử dụng màn hình để duy trì các phiên ssh trên máy chủ của mình. Sẽ thật tuyệt nếu tôi có thể tự động tiếp tục bất kỳ phiên chạy nào cho người dùng của mình khi tôi đăng nhập. Cách đơn giản để làm điều này là thêm "screen -r" vào .bashrc của tôi và điều này có vẻ hoạt động tốt. Tôi chỉ tự hỏi nếu điều này sẽ phá vỡ bất cứ điều gì trong điều kiện mà tôi chưa thử nghiệm. Bất cứ ai có kinh nghiệm ở đây có thể cho tôi biết liệu đây có phải là điều tôi nên làm không?

Câu trả lời:


20

Bạn cần screen -R -dtự động đính kèm vào một phiên hiện có nếu một phiên tồn tại và tạo một phiên khác.

Hãy chắc chắn rằng bạn chỉ làm điều này trên các vỏ tương tác . Nguồn Bash ~/.bashrcthậm chí cho các shell không tương tác khi tiến trình cha của nó là rshd hoặc sshd (điều này được đề cập trong tài liệu, nhưng rất dễ bỏ lỡ). Bạn có thể nói một vỏ là tương tác vì $-chứa i.

case $- in
  *i*) screen -Rd;;
esac

Điều này sẽ không dễ dàng cho phép bạn chạy các phiên màn hình khác nhau trong các thiết bị đầu cuối khác nhau.

Bạn sẽ cần tách ra khỏi màn hình, sau đó thoát khỏi vỏ cha mẹ để đăng xuất. Điều này có thể được giải quyết bằng cách sử dụng exec screenthay vì screen.

Nếu bạn bắt đầu một shell khác với shell đăng nhập, bạn sẽ được đưa vào màn hình, đó không phải là điều bạn muốn hầu hết thời gian. Tôi ít nhất sẽ hạn chế điều này khi bạn đang chạy trực tiếp trong một phiên ssh tương tác, với nội dung như sau ~/.bash_profile:

case "/$(ps -p $PPID -o comm=)" in
  */sshd) screen -R -d;;
esac

Hãy cẩn thận khi bạn làm những việc phức tạp với .bashrclỗi của bạn khiến shell thoát ra sẽ gây khó khăn cho việc đăng nhập.


Những gì tôi khuyên là không sửa đổi các tệp khởi tạo shell của bạn trên máy chủ, mà thay vào đó chạy màn hình rõ ràng từ máy khách, như trong

ssh -t host.example.com screen -R -d

(Bạn có thể sẽ tạo một bí danh shell hoặc lối tắt môi trường máy tính để bàn trên máy khách.) Bằng cách đó, bạn có thể dễ dàng chọn không chạy màn hình, chỉ định tên phiên thay thế, v.v.


Hoàn hảo. Nên ở trang đàn ông.
marcusw

Không phải là tốt hơn cho ssh để chạy screen -D -Rhoặc thậm chí screen -D -RR?
niutech

2

Các tập lệnh khởi động máy chủ X của bạn thường khởi động một trình bao mới, ví dụ: nếu bạn đang đăng nhập bằng gdm bằng "Phiên do người dùng xác định".

Tôi nghĩ rằng bất cứ điều gì không thoát ra có thể khiến khởi động X của bạn bị treo. Điều đó sẽ bao gồm screen -r.


Các kịch bản khởi động máy chủ X sẽ không chạy .bashrc. Nhưng có những trường hợp khác, đây sẽ là một vấn đề, ví dụ như khi chạy ssh host.example.com somecommand(thật kỳ lạ, bash không chạy .bashrcsau đó).
Gilles 'SO- ngừng trở nên xấu xa'

Đó là trên một số bản phát hành nếu bạn chọn "Phiên do người dùng xác định". Trên Ubuntu, nó cung cấp .profile một cách rõ ràng, những người khác gọi .xsession từ bên trong vỏ đăng nhập, thường có nghĩa là .bash_profile và hầu hết người dùng đều lấy .bashrc từ bên trong .bash_profile của họ.
Mikel
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.