Nohup kullanarak çoklu komut çalıştırma


41

Kullanarak birden fazla komut çalıştırmam gerekiyor nohup. Her komut önceki komuttan sonra yürütülmelidir.

Bu komutu örnek olarak kullandım:

nohup wget $url && wget $url2 > /dev/null 2>&1 &

Ancak bu komut işe yaramadı.

Bu amaçla hangi komutu kullanmalıyım?

Yanıtlar:


55

Şuraya sar sh -c:

nohup sh -c 'wget "$0" && wget "$1"' "$url1" "$url2" > /dev/null &

1
nohup'ı başlattığımda "nohup: girişi yok sayıyor ve stderr'i stdout'a yeniden yönlendiriyorum" bu yüzden "2> & 1" gereksiz değil mi?
harschware

1
Muhtemelen. Sanırım cevabı yazarken, soruyu kopyaladım.
jw013

6

Komut listenizi ayrı bir kabuk dosyasında (ör. Command.sh, hiçbir nohup olmadan) oluşturmak çok daha kolay olmaz mıydı.

Öyleyse ara.

nohup bash command.sh

4

Diğerleri zaten hakkında cevap verdi nohup. Pratik bir not olarak: Bu tür bir şeyi bir oturumda screenveya tmuxoturumda yapmanızı öneririm . Bu şekilde bağlantıyı kesebilir, daha sonra tekrar bağlayabilir ve çıktı ile nihai sonucu görebilirsiniz.


1
Bu cevap etkileşimli senaryolar için harika, ancak komut dosyaları veya otomasyon için bir anlam ifade etmiyor.
Jonathan Hartley

0

Böyle daha basit olurdu:

nohup sh -c "wget $url && wget $url2" > /dev/null 2>&1 &

Ancak, URL’ler özel karakterler içeriyorsa sorunlara neden olabilir, bu nedenle daha güvenli bir seçenek için kullanabilirsiniz:

nohup sh -c "wget \"$url\" && wget \"$url2\"" > /dev/null 2>&1 &

3
Parametreleri geçirmek için tek güvenli yolu sh -ckonumsal parametreler üzerinden erişilebilir ayrı argümanlar, yoluyladır ( $0, $1, ...). Dize ayrıştırma için argümanları uygun şekilde alıntılamanın kolay veya basit bir yolu yoktur. Çıkarılan çift tırnak kullanma girişimi, $urlkendisi çift tırnak içeriyorsa başarısız olur . a='problem"'; sh -c "echo \"$a\""Kendinizi deneyin ve görün - bir sözdizimi hatası almalısınız, çünkü çalışmayı sh -cdener echo "problem"".
jw013 5:12

@ jw013 İlgi alanı dışında, itirazınız -oh tarafından kabul edilen cevaplara eşit olarak mı uygulanıyor? Senin tarafından. Muhtemelen hayır, o zaman. Ama neden olmasın anlamıyorum! :-)
Jonathan Hartley

1
@ JonathanHartley Sorunuzu anladığımdan emin değilim. Bu cevabı benimkiyle dikkatlice karşılaştırırsanız, bu şekilde $urlve $url2kullanıldığında bir fark olduğunu fark etmelisiniz .
jw013

Tabii ki @ jw013 Ah. Aptaldım. Beni düzelttiğin için teşekkür ederim.
Jonathan Hartley
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.