Gerçek zamanlı stdout ve stderr'i psexec'in psexec'le aynı akışta (borular) oluşturduğu bir işlemden almanın bir yolu var mı?


1

Benim sorum buradaki zaman aşımına bağlı ek bir kısıtlama ile bu soruya çok yakın

Jenkins bazı otomatik testler başlatmak ve daha sonra çalışan testlerin stdout (ve stderr) yakalamak için kullanıyorum. Orada cevap verdiğim gibi, testler bittikten sonra stdout ve stderr'in nasıl gösterileceğini belirledim, ancak tanımladığım yöntem işlem bittiği zaman değil, işlem bitince terminaldeki her şeyi yazdırıyor.

Benim sorunum, eğer Jenkins çıkış borusunda herhangi bir aktivite görmüyorsa, test işlerim 15 dakikalık bir zaman aşımına uğradı (test betiğinin çalışması 1.5 veya daha fazla saat sürebilir). Testlerin askıya alınabilmesi için bu zaman aşımını önemli ölçüde artırmak istemiyorum.

Psexec'in gerçek zamanlı olarak çalıştığı terminal penceresinde psexec tarafından oluşturulan alt sürecin stdout ve stderr akışlarını elde etmenin bir yolu var mı?

psexec, bir ağ üzerinden kullanılmayan test makinelerinde bir toplu komut dosyası tarafından başlatılır.

-D bayrağıyla çalışan psexec'i çalıştırmayı ve alt işlem çıktısını bir dosyaya bağlamayı ve daha sonra yalnızca toplu iş komut dosyasında bir işlem yürütmeyi, işlemin bitmesini bekleyen bir döngü çalıştırmayı düşündüm, bu daha kesmek gibi görünüyor. son çare seçeneği.

Test senaryolarının bittiği zaman Jenkins'in bilmesi gerektiği için runas iyi bir alternatif değil. Yukarıda belirttiğim PID ve bir bekleme döngüsü ile aynı şeyi yapabilirim, ancak bu hala bir kesmek.

Ayrıca, psexec'in IO akışlarını çocuğa aktarmanın ve çıktısını doğruca Jenkins'e bu şekilde eklemenin mümkün olup olmadığını merak ediyorum ama bunun nasıl yapılacağı hakkında hiçbir fikrim yok.

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.