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.