Đầu ra SSH không phải là bộ đệm?


35

Tôi đang chạy một kịch bản trên một máy từ xa như thế này:

ssh $host "pip install -r /path/to/requirements.txt"

Nhưng đầu ra không được đệm dòng; thay vì nhìn thấy một dòng được trả về tại một thời điểm, tất cả các dòng (~ 10) đều được in cùng một lúc khi kết nối kết thúc.

Có chuyện gì thế này? Có cách nào để buộc chúng được đệm dòng không?

(ngoài ra, để nói rõ ràng: khi tôi ssh vào $hostvà chạy lệnh Cấm thủ công, đầu ra là bộ đệm, như mong đợi)

Câu trả lời:


45

Sử dụng ssh -t ...để buộc phân bổ giả (đó là những gì bạn nhận được khi đăng nhập bình thường qua ssh.)


Thật không may, đã không giúp đỡ. Đây cũng có thể là vấn đề với MTU, nhưng cả hai đều không giúp được gì
Nick Roz

Xem bình luận của Magnus bên dưới ref bằng cách sử dụng -tt- điều đó hiệu quả với tôi khi -t không.
Tom Dalton

23

Để mở rộng một chút về câu trả lời của Ryan Fox: Nhiều chương trình (hầu hết? - đó là mặc định cho bất kỳ chương trình bộ đệm dòng nào khi họ đang nói chuyện với một thiết bị đầu cuối, nhưng hoàn toàn đệm nó. (Tiêu chuẩn C chỉ định rằng thiết bị xuất chuẩn ban đầu được đệm hoàn toàn khi nó "có thể được xác định là không tham chiếu đến một thiết bị tương tác".)

Vì vậy, những gì bạn đang thấy là đầu ra của chương trình bạn đang chạy từ xa (như được đưa ra cho thiết bị xuất chuẩn) không được đệm dòng; Ssh chỉ đi qua những gì nó nhận được khi nhận được nó. (Tôi nghĩ rằng ssh thực sự không có bộ đệm nào trên đầu ra của nó - đó sẽ là cách kỳ diệu nhất để đảm bảo rằng người dùng nhìn thấy những gì chương trình từ xa dự định.)


Một người dùng ẩn danh gợi ý rằng thiết bị xuất chuẩn được đệm hoàn toàn, không được đệm dòng
Michael Mrozek

Dave Vandervies đã nói với tôi ngoài ban nhạc rằng anh ấy là người thực hiện chỉnh sửa và điều đó là chính xác (nghĩa là, thiết bị xuất chuẩn ban đầu được đệm hoàn toàn, không được đệm dòng).
David Wolever

6

Để mở rộng hơn nữa về câu trả lời của Ryan Fox, tôi ssh -tcũng không làm việc, nhưng ssh -ttđã làm. Xem trang ssh man về -t:

Nhiều tùy chọn bắt buộc phân bổ tty, ngay cả khi ssh không có tty cục bộ

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.