Trước đây tôi đã gắn lại với một phiên màn hình dài với screen -dr control
. Tuy nhiên, đôi khi lệnh này sẽ không gắn lại vào màn hình và thay vào đó bị treo vĩnh viễn (hơn 10 phút sau đó tôi đã hủy bỏ). Điều này chỉ xảy ra khi kết nối SSH bị ngắt đột ngột chứ không phải khi màn hình được tách ra đúng cách Ctrl-A d
. Các công tắc khác, chẳng hạn như screen -x
hoặc screen -D -RR
cũng không hoạt động.
Bài đăng này đề nghị tiêu diệt PTY giữ phiên màn hình sẽ khiến màn hình hoàn thành việc ngắt kết nối. Tuy nhiên, nó chỉ đơn giản là giết chết lớp vỏ screen -dr control
được gọi là.
Ví dụ:
$ ps -ef | grep control | grep -v grep
nomad 7387 7109 0 13:05 pts/50 00:00:00 screen -dr control
nomad 15299 1 0 Nov27 ? 00:13:47 SCREEN -S control
$ ps -ef | grep bash | grep 'pts/50'
nomad 7109 7108 0 12:49 pts/50 00:00:00 -bash
Bài đăng được liên kết đề xuất tiêu diệt bash
quá trình với PID 7109. Điều này cũng sẽ giết screen -dr control
quá trình với PID 7387. Sau đó, tôi vẫn không thể kết nối với màn hình.
Quá trình SCREEN -S control
bắt đầu phiên màn hình có init
vai trò là cha mẹ của nó mà rõ ràng tôi không thể giết được.
Có cách nào để gắn lại vào phiên treo màn hình không?
Cập nhật: Điều này xảy ra trên CentOS 6.4 bằng kernel 2.6.32-358.6.1.el6.x86_64. Các shell đều là phiên bản bash 4.1.2 (1).
screen -ls
nói trong những trường hợp "treo"?screen -d -r <session>
có nghĩa là "tách ra và phục hồi" vì vậy việc không tách rời nó không phải là vấn đề quan trọng. (Và để làm điều đó thường xuyên, nó không ...)