SSH çıkışı satır tamponlu değil mi?


35

Bunun gibi uzaktaki bir makinede bir komut dosyası çalıştırıyorum:

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

Ancak çıktı satır tamponlu değil; bir seferde bir satır döndürülmek yerine, bağlantı sona erdiğinde tüm satırların (~ 10) bir defada basılması gerekir.

Bunun nesi var? Onları çizgi arabelleğe alınmaya zorlamanın bir yolu var mı?

(ayrıca, açıkça belirtmek gerekirse: “ssh $host” komutunu girip “elle” komutunu çalıştırdığımda, çıktı beklendiği gibi satır arabelleğe alınıyor)

Yanıtlar:


45

ssh -t ...Bir sözde tty tahsisini zorlamak için kullanın (normal olarak ssh aracılığıyla giriş yaparken ne elde edersiniz)


maalesef yardım etmedi. Bu aynı zamanda MTU ile ilgili bir problem olabilir, fakat ikisi de yardımcı
Nick Roz,

Magnus'un 'ref kullandığını' yorumuna bakın -tt- bu olmadığında benim için işe yaradı.
Tom Dalton

23

Ryan Fox'un cevabını biraz genişletmek için: Birçok program (çoğu? - herhangi bir C programının varsayılanı) line-buffer stdout, bir uçbirimle konuşurken, ancak bunu başka türlü tamamen arabelleğe alır. (C standardı, "etkileşimli bir cihaza başvurmayacağının belirlenebileceği" olduğunda stdout'un başlangıçta tamamen tamponlandığını belirtir.)

Gördüğünüz şey, uzaktan çalıştırdığınız programın çıktısının (stdout'a verildiği gibi) satır tamponlaması olmadığıdır; ssh, onu aldığında ne elde edeceğinden geçiyor. (Ssh'nin aslında çıktısında hiçbir tamponlama olmadığını düşünüyorum - bu, kullanıcının uzaktaki programın ne istediğini gördüğünden emin olmanın en az sihirli yolu olacaktır.)


Anonim bir kullanıcı anlaşılacağı stdout'u tamamen tamponlu hat tamponlu olmadığını
Michael Mrozek

Dave Vandervies bana grubun kendisinin düzenlemeyi yapan kişi olduğunu ve doğru olduğunu söyledi (yani stdout başlangıçta tamamen arabelleğe alınmış, satır arabelleğe alınmamış).
David Wolever

6

Ryan Fox'un cevabını daha da genişletmek, ssh -tbenim için de işe yaramadı, ama ssh -ttyaptı. -T hakkında ssh man sayfasına bakın:

Çoklu t seçenekleri, ssh'de yerel tty olmasa bile tty tahsisini zorlar

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.