GNU Screen Copy chặn chế độ thực thi?


11

Tôi sử dụng chế độ cuộn / sao chép của GNU Screen. Vì vậy, tôi nhấn Control-A [để vào chế độ sao chép, cuộn lên phần tôi quan tâm ... và sau đó tôi quên.

Tuy nhiên, có vẻ như để màn hình GNU ở chế độ cuộn / sao chép chặn thực thi (bất kỳ ứng dụng nào đã hoạt động vào thời điểm đó). Ví dụ: nếu tôi kích hoạt máy chủ web cục bộ nếu tôi ở chế độ cuộn / sao chép, thì các yêu cầu được gửi đến máy chủ web đó sẽ hết thời gian: quá trình không đáp ứng cho đến khi tôi thoát khỏi chế độ sao chép / cuộn.

Tôi đã thấy điều này cả trong tập lệnh / máy chủ Ruby On Rails và với công cụ Python Paste.

Tôi đã xem xét bật chế độ ghi nhật ký cho các cửa sổ của mình, sau đó chỉ cần cắt / gọt qua các logfile đó như một cách thay thế, nhưng nếu điều này có thể được kiểm soát bằng một phương tiện khác (cài đặt, kích hoạt chế độ sao chép theo một cách khác) tôi rất quan tâm.

Chuyển đổi màn hình của tôi nói:

Phiên bản màn hình 4,00,03 (FAU) ngày 23 tháng 10 năm 06

(Tôi đã hỏi điều này trên quora.com, nhưng có lẽ đây là một nơi tốt hơn)

Câu trả lời:


7

Lý do các quy trình của bạn bị chặn là vì màn hình sẽ chặn đường ống đầu ra của quy trình trong khi bạn ở chế độ dán sao chép. Tôi không thấy nó thực sự là một lỗi, vì thực tế bạn đang yêu cầu màn hình lưu trữ một lượng thông tin không giới hạn tiềm năng trong bộ đệm của nó trong khi bạn đang sao chép / dán. Nếu bạn muốn có đầu ra của một chương trình đi qua, nhưng cũng có thể tạm dừng chương trình đó một lần, hãy thử điều này.

program > logfile 2>&1 & 
less logfile

2> & 1 sẽ kết hợp thiết bị xuất chuẩn và thiết bị xuất chuẩn từ chương trình của bạn. & Gửi chương trình vào nền. Sử dụng fg để đưa nó lên nền trước nếu bạn cần. Bây giờ nhấn F để theo dõi phần cuối của logfile khi nó phát triển với ít hơn. Nhấn ctrl + c nếu bạn cần dừng lại và kiểm tra cái gì đó, sau đó F để theo dõi lại. Bạn cũng có thể nhấn & để giới hạn các dòng hiển thị dưới dạng biểu thức chính quy. Rất tiện dụng khi đi qua các tệp nhật ký.


"màn hình sẽ chặn đường ống đầu ra của quá trình khi bạn ở chế độ sao chép" - điều này có thể đúng khi một lượng đầu ra nhất định được tạo, nhưng dường như không đúng trong trường hợp này: while ((1)) ; do echo $i; i=$((i+1)); sleep 0.1; done- thử gọi Sao chép Chế độ và chờ một chút. Khi bạn thoát khỏi chế độ sao chép, giá trị của i sẽ tăng vọt, cho thấy việc thực thi tiếp tục trong nền. Tuy nhiên, tôi đã thấy đầu ra khối màn hình cho một số quy trình, vì vậy tôi tò mò không biết chính xác điều gì sẽ xác định liệu màn hình có chặn hay không.
davidA

"Điều gì xác định chính xác liệu khối màn hình có hay không" - kích thước của bộ đệm cuộn xác định nó. Bạn có thể tăng nó lên không giới hạn, nhưng điều này sẽ chiếm bộ nhớ. Nhưng sẽ không chặn.
san
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.