Çalışan bir programın çıktısı / dev / null konumuna nasıl yeniden yönlendirilir


19

Bir programın çıktısını bastırmak için /dev/null, örneğin tüm hata ve uyarı mesajlarını kromdan gizlemek için programı bu şekilde başlatabileceğimi biliyorum.

chromium-browser 2> /dev/null &

Ancak, hata mesajlarını ve türü unutursam

chromium-browser &

(bir komutun ortasında göründüklerinde oldukça sinir bozucu) Uygulamayı durdurmak ve düzgün bir şekilde yeniden başlatmak dışında ne yapacağımı bilmiyorum.

Uygulamayı yeniden başlatmadan bir şekilde hata çıktısını yeniden yönlendirebilir miyim?

Yanıtlar:


8

Tarayıcıyı nohup ile başlatabilir ve daha sonra terminal penceresini aşağıdakilerle kapatabilirsiniz:

nohup chromium-browser &

Bu şekilde, tarayıcı başlatılacak ve konsoldan ayrılacak ve daha sonra sessizce kapatılabilecektir.


2
nohup
yazmayı

5
zsh On @phu en azından sen koyabilirsiniz setopt nohupGözlerinde farklı .zshrcve çalıştırmak herşeyi nohup edecektir; Diğer mermilerden emin değilim
Michael Mrozek

evet harika, bu şekilde beğendim!
phunehehe

3
Veya bir takma ad oluşturabilirsiniz ... takma ad krom = nohup krom
Pablo Olmos de Aguilera C.

22

Bu, burada cevaplandı: burada vladr tarafından . Cevap (alıntı):

  • gdb kullanarak söz konusu işleme ekleyin ve çalıştırın:
  • p dup2 (açık ("/ dev / null", 0), 1) (stdout yönlendirmesi için)
  • p dup2 (açık ("/ dev / null", 0), 2) (stderr yönlendirmesi için)
  • ayırmak
  • çıkmak

Aşağıdaki komut dosyasında denedim:

[ilk yorumdan sonra baskı:]

10 # uyku, böylece sürece eklemek için zaman olabilir
eğer ["$ sonorfather" == "baba"] # sonsuz özyinelemeden kaçının 
sonra 
   sonorfather = oğul ./test & 
fi 

doğruyken 
yapmak 
   echo "stdout $ sonorfather" 
   echo "stderr $ sonorfather"> & 2 
   uyku 1 
tamam 

Oğul işlemi oluşturulmadan önce stderr çıktısını devre dışı bıraktım, işte çıktı:

stdout baba 
stdout oğlu 
stdout baba 
stdout oğlu 
[ve bunun gibi...]. 

Umarım bu sorunuzu cevaplar: Oğul süreci stderr de yönlendirildi.


3
Bu çok iyi, ama yine de çözmek için her tarayıcı sekmesi için yeni bir süreç doğurur gibi, krom ile ilgili sorunlar olabilir?
phunehehe

Size cevap vermek için yayımı düzenledi.
Mike Perdide

Alt süreçler oluşturulmadan önce çıktıyı yeniden yönlendirmem gerekecek gibi görünüyor mu? Bilgi için teşekkürler, ama karmaşıklığı ile ilgili olarak ben sadece gitmek istiyorum nohup:)
phunehehe

Teknik olarak, bu yinelenen dosya tanımlayıcılarını sızdırıyor /dev/null, ancak pratikte hiçbir şeyi önemli ölçüde etkilemiyor.
Kevin

6

Bunun chromium-browseryerine çalıştırmak için bir takma ad da ayarlayabilirsinizchromium-browser 2> /dev/null

örneğin bash kullanıyorsanız /home/username/.bashrc dosyasını düzenleyin ve satır ekleyin:

chromium-browser='chromium-browser 2> /dev/null'

ya da daha iyisi

chrome='chromium-browser 2> /dev/null'

ve bazı tuş vuruşlarını kaydedin.

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.