Bạn cần screen -R -d
tự độ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 ~/.bashrc
thậ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 screen
thay 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 .bashrc
lỗ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.