Bilinmeyen bir programın STDOUT'u nereye yönlendirilir?


11

Takibinde olarak bu soruya , nerede bilmek istiyorum ben olduğunuz koşu hangi bir programın STDOUT ve STDERR disown -hyönlendirilir.

Yanıtlar:


10

disownSTDOUT / ERR programlarını değiştirmez. Yine de, onları yeniden yönlendirdiğiniz yere ( >vb. Kullanarak ) gideceklerdir . Onları yönlendirmediyseniz, programı başlattığınız terminale gitmeye devam ederler (o terminali kapatana kadar, bu durumda atılırlar).

Göstermek için bunu bir terminalde çalıştırın:

bash -c 'while true; do sleep 1; echo hi; done' &

Bu, her saniye "merhaba" yazdıracaktır (ve sizi çok rahatsız ;-)). disownProgramı başlattıktan sonra yaparsanız , "hi" ler devam eder. Kabuğun PID'sini bulmanız (örneğin ps kullanarak) ve durması için öldürmeniz gerekir.

Düzenle:

Yorumlara dayanarak, belki de gerçekten yapmak istediğiniz şey, programı düzenledikten vedisown çalışmakta olduğu terminali kapattıktan sonra çıktısını kurtarmaktır . Bu soruda açıklanmıştır: tcsh ile gerçekte uzak nohup ( quack quixote sayesinde).


Önceki sorusuna göre, gerçek şu ki bu önceki terminali kapattı. Peki çıktıyı nasıl alabilir?
Gnoupi

@Gnoupi: Çıktıyı geri almanın bir yolu olduğunu sanmıyorum. En azından hiç duymadım.
sleske

Yorum için teşekkürler Gnoupi :-) Gerçekte, çıktı hiçbir yerde bulunamadı. Yine de bakmaya devam edeceğim :-)
Thrawn

1
bu gerçekten cevaptır: reddetme hiçbir şeyi değiştirmez; işlemi başlattığınızda herhangi bir yakalama veya yönlendirme ayarlamanız gerekir . daha sonra ihtiyacınız varsa, gdb (sadece) arkadaşınızdır: superuser.com/questions/50058/…
quack quixote

@quack - Sorunun, yalnızca araçtan ziyade gerçek kullanım durumunu vurgulamak için yeniden düzenlenmesi gerektiğini söyleyebilirim. Mevcut formda (reddetmeye odaklanmış), bu gerçekten doğru cevaptır. Ancak bağlamdan, önceki soru ile, kullanıcı sadece çıktıyı kurtarmak istiyor ve bu durumda bağlantınız cevaptır.
Mart'ta Gnoupi
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.