Ubuntu'da nohup kullanımı - iş numarasını göstermemesi nasıl sağlanır?


0

Bu komutu çalıştırıyorum:

$ nohup command > foo.out 2> foo.err < /dev/null &

Benim sorunum, nohupkomutumu arka planda çalıştırmamama rağmen , terminalime böyle bir şey basıyor:

[1] 27918

İş numarasını vermemesini nasıl sağlayabilirim? Sadece bana hiçbir şey söylemeden arka planda yapmasını istiyorum. Mac OS X'te, tam olarak olan bu, bu yüzden Ubuntu'da farklı şekilde çalıştığı için biraz sinirleniyorum ...

Yardım için teşekkürler!


2
[1] 27918 nohup'tan değil
Majenko 01.01.2011

Teşekkürler Matt, yaptı. Şimdi bu soruyu nasıl kapatacağım ...
hora

Bunu yapmanın yolu, yanındaki onay işaretini kullanarak kabul edilen bir cevabı işaretler.
Dennis Williamson,

Superuser.com/faq bölümündeki "Nasıl soru sorarım" bölümüne bakın
Grawity

Yanıtlar:


4

İş bilgisi, kabuğunuz tarafından görüntülenmez nohup.

Bu alternatifi deneyebilirsiniz:

(yourcommand&)

( iş denetimini farklı şekilde yapan bir alt kabuk ortaya çıkarır.

(Ben nh() { ("$@" &); }~ / .bashrc dosyam var, bu yüzden nh commandaynı şeyi yapmak için yazabilirim .)

Başka, farklı bir yol:

setsid yourcommand

Düzenleme: Görünüşe göre (setsid yourcommand &)en iyi kombinasyon budur, çünkü tty'den ayrılır ve etkileşimli ve komut dosyası modlarında eşit çalışır.


(command &) benim için nohup ile ioctl hatasıyla karşılaştığım yerde çalıştı.
Shahzada Hatim

1

[1] 27918 nohup'tan geliyor.

Arka planda çalıştırmak istediğiniz komutu bir komut dosyasının içine koyun:

#!/bin/sh
/path/to/command & >/dev/null 2>/dev/null

ve sonra bunu nohup ile çağırın

nohup sh /path/to/my/script > foo.out 2> foo.err < /dev/null

& Çıktısı daha sonra komut dosyasında / dev / null dizinine yönlendirilir.


&sadece bir komut sonlandırıcısıdır, herhangi bir şey çıkarmaz ve yönlendiremezsiniz. Etkileşimli modda, iş hattı kabuk tarafından yazdırılır; etkileşimli olmayan (komut dosyaları dahil) sessiz kalır. İç yönlendirmeleriniz komutun çıktısına uygulanır ve dış yönlendirmelerin onları geçersiz kılacağını sanmıyorum.
Grawity

1

Aynen yukarıda belirtildiği gibi (Bu arada, teşekkürler).

Test.ksh adlı bir komut dosyasında:

#!/bin/ksh
./test2.ksh >/dev/null
nohup ksh test2.ksh < /dev/null
echo  "whatever"

Test2.ksh başka bir komut dosyasındaysa (veya bir komut olabilir):

#!/bin/ksh
max=10
for ((i=2; i<=$max; ++i )) ; do
    echo -e "\n Hello world "
done

O zaman koş:

~> ksh test.ksh

ve çıktı:

nohup: appending output to `nohup.out'
whatever
~>

Benim için çalıştı

& Yeniden yönlendirmede saklarsanız

./test2.ksh & >/dev/null

Hem tty'de hem de .out'ta basılacaktır.

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.