Ç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.