Arka planda bir uygulamanın çıktısı / dev / null'a nasıl yönlendirilir


100

Linux'ta bir arka plan uygulamasından üretilen çıktıyı / dev / null'a yeniden yönlendirmek istiyorum.

Kate metin editörü kullanıyorum ve / dev / null'a yönlendirmek istediğim terminaldeki tüm hata ayıklama mesajlarını yazdırıyor.

Nasıl yapılacağına dair bir fikrin var mı?

Teşekkürler


Yanıtlar:


230

Kullan:

yourcommand  > /dev/null 2>&1

Arka planda çalışması gerekiyorsa, bir &

yourcommand > /dev/null 2>&1 &

>/dev/null 2>&1aracı yönlendirmek stdoutiçin /dev/nullVE stderrnereye yere stdouto zaman noktalarında

stderrKonsolda gerçekleşmesini istiyorsanız ve yalnızca siz stdoutgidiyorsanız /dev/nullkullanabilirsiniz:

yourcommand 2>&1 > /dev/null

Bu durumda stderryönlendirilir stdout(örneğin sizin konsol) ve sonradan orijinal stdoutyönlendirilir/dev/null

Program sona ermezse, şunları kullanabilirsiniz:

nohup yourcommand &

Herhangi bir parametre olmadan tüm çıktılar nohup.out'a iner.


ikisi de çalışıyor, ancak küçük bir fark var, ama hatırlamayın
evildead

ah tamam anladım ve diğer sürümü ekledi
evildead

Bu bir bash dosyasındaki son komutsa, fark ettiğim bir şey, dosyayı çağıran komut konsolunu bir istem olmadan bırakmasıdır.
Dennis

@elig zaten çalışan bir uygulamanın çıktısını yeniden yönlendirmek mümkün değildir imo veya en azından o kadar kolay değildir, çünkü yoluyla yeniden yönlendirme dup2()hemen sonra fork()ama öncesinde gerçekleşir exec*(). exec*()Programı çalıştırdıktan sonra , kabuğun o işlemin çıktısını yeniden yönlendirme yeteneği yoktur. Yanılıyorsam düzeltin, ancak bu tür bir işlevselliği uygulayan bir kabuk hakkında bilgim yok.
evildead

3

Bunlar ayrıca her ikisini de yönlendirecektir:

yourcommand  &> /dev/null

yourcommand  >& /dev/null

bash kılavuzu ilkinin tercih edildiğini söylese de.

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.