2012-11-15 10 views
5

özel durum:İlk verinin tempfile olmadan ulaşması için bir boruda nasıl program yapılmayabilir?

, bir standart giriş aygıtına bir çıktı üretmek bir program anlamına gelir, ve kıvrımla uzak sunucudaki koymak
generate_data | curl -T - http://someserver/path 

.

sorun generate_data çok fazla zaman alırsa, sunucu benim sonraki iterasyon nedenle borular, veri hazır olması beklemeden tüm komutları yürütmek biliyoruz 408.

dönecek olmasıdır:

generate_data | (sleep 20 ; curl -T - http://someserver/path) 

Süre, generate_data'yı çalıştırmak için gereken en yüksek sürenin iki katıydı, bu nedenle her şey yolunda. Ama ... bu optimal bir çözüm değil.

Okumayla ve karmaşık bir kabuk komut dosyasıyla daha karmaşık bir şey oluşturabileceğimi biliyorum, ancak açık bir şey eksik olduğumu hissediyorum.

Yani ... Bir temp dosyası oluşturmadan sleep 20; yerine ne kullanabilirim?

+6

Ne kadar veri olacak? geçici bir dosya yazmaya ne dersiniz, ör. generate_data> tempfile; curl -T tempfile ... ' –

+0

'Uyu' çalıştığı için minnettar ol! ;-) Hepinize iyi şanslar. – shellter

cevap

2
generate_data > /tmp/generated_data; cat /tmp/generated_data | curl -T - http://someserver/path 
+0

Maalesef, sorularımda bir tempfile kullanmak istemediğimi belirtmedim. Bir tempfile kullanarak, temiz bir temizleme dahil, uygun bir çözüm gibi bir şey olacaktır. '' generate_data>/tmp/asdf && curl -T/tmp/asdf http: // server/path; ([-f/tmp/asdf && rm/tmp/asdf) '' – Guillermo

+0

İlk veri oluşturulduktan sonra gönderilmeye başlamak için curl ister misiniz, yoksa veri üretilinceye kadar beklemesini ister misiniz? Diğer bir deyişle, veri üretmek için çok uzun sürdüğünüz veya herhangi bir çıkış başlamadan önce gerçekleşen bir süreç var mı? – mbarrows

İlgili konular