Bir arka plan komutu çalıştırmayı tamamladığında bash öğesinin “Tamamlandı” göstermesini engelleme


34

Arka planda bir komut çalıştırırsam &, şunun gibi:

sleep 2 &

komut bittiğinde, "Tamam" ı alıyorum. "Tamamlandı" mesajını görmekten nasıl kaçınabilirim?

Yanıtlar:


34

Komutu bir alt kabukta çalıştırın:

(sleep 2 &)

lütfen, bunu kullanarak, arayan kabuğundaki işlerin kontrolünü kaybettiğinizi ( jobshiçbir şey göstermeyeceğini) unutmayın.
mighq

36

Yerleşik kabuğu yürütün:

$ set +m

Bu, “monitör modu” nu kapatarak çalışır, böylece kabuk sonlanan arka plan işlerini rapor etmez.

Komutu aşağıdaki gibi bir alt kabukta çalıştırmanıza rağmen:

$ (sleep 2&)

... ayrıca mesajı devre dışı bırakacaktır, çalışmasının tek nedeni izleme modunun varsayılan olarak yalnızca etkileşimli mermiler için etkinleştirilmiş olmasıdır. Yani, alt kabuk, otomatik olarak "set + m" olan ekstra bir kabuk çalıştırarak mesajdan kaçınır .


4
Biri, bu çıkışın uyku tarafından gerçekleştirilmediğini not etmelidir. Sadece bitmiş arka plan işi hakkında sizi bilgilendiren bash kabuğu.
flolo

8

Daha önceki iki cevabı netleştirmek istiyorum. İstediğin şey, kabuğundaki herhangi bir komutun Done mesajını asla görmemekse set +m, yolun yoludur. Sadece .profile ve / veya .bashrc içine koyun ve bitirin. Bununla birlikte, şunu yazarsanız:

set +m
sleep 2 &
set -m

ve uyku finalden sonra sona eriyor set -m, yine de bitmiş mesajı alacaksınız.

Tek bir komut çağrısı için mesajı devre dışı bırakmak istiyorsanız, alt kabuk tekniği (sleep 2 &)gidilecek yoldur.

Dürüst olmak gerekirse, sadece biliyordum set +m, o yüzden +1 beni aydınlatmak için Wooble'a. Ancak, istediğiniz iki çözümden hangisinin yapmaya çalıştığınıza bağlı olduğunu belirtmekte fayda var.


0

Alt kabuk olmadan , aşağıdakileri yapabilirsiniz:

silent_background() {
    { 2>&3 "$@"& } 3>&2 2>-
    disown &>/dev/null  # Close STD{OUT,ERR} for silence if job has already completed
}

silent_background sleep 5

Dayanarak bu cevabı .

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.