Nohup komutunu girişle yürütün


11

UNIX'te nohup kullanarak çalıştırmak istediğim bir işlem var. Ancak, bu işlem bir noktada girmem gereken bir istemde yesveya nodevam etmesi için bekler . Şimdiye kadar, UNIX'te aşağıdakileri yapıyorum:

nohup myprocess <<EOF
y
EOF

Bu yüzden 'y' ile bir dosyada nohup ve pipe kullanarak 'myprocess' işlemini başlattım ve dosyayı kapatın. Yukarıdaki satırlar etkili bir şekilde üç ayrı komuttur - yani UNIX'in ilk satırında enter tuşuna basıyorum, sonra 'y' yazdığım bir komut istemi alıyorum ve enter tuşuna basıp son olarak 'EOF' yazıp tekrar geri dönüyorum. Bu mükemmel çalışıyor, ama benim sorunum aşağıda.

Şimdi bunu Perl'de yürütmek istiyorum, ancak üç satırdan fazla olduğu için bu komutu nasıl çalıştırabileceğimden emin değilim. Aşağıdakilerin işe yarayıp yaramayacağını bilmiyorum:

my $startprocess = `nohup myprocess <<EOF &
y
EOF
`

Bu soruda yazılı şekilde çalışmalıdır (ilk düzenleme biraz saçma hale getirdikten sonra)

@hop Neden bahsettiğinizi bilmiyorum, ilk düzenleme bir satırsonu ekledi ve kabuk parçalarını kod olarak biçimlendirdiler, böylece düzgün bir şekilde görüntüleneceklerdi. Neredeyse hiçbir şey değiştirmedim, orijinal revizyon burada
Michael Mrozek

@Michael: Haklısın ve üzgünüm. fark ve düşünce yanlış yorumladı, backticks ekledim. soruyu daha saçma hale getirir: verilen örnek işe yaramalıdır.

@hop Perl biri mi? Perl bilmediğim için denemeden işe yaramadığını düşündüm, ama sanırım "Aşağıdakilerin işe yarayıp yaramayacağını bilmiyorum" dedi, bu yüzden belki iyi; muhtemelen verilen örneğin işe yaradığını cevaplamalısınız
Michael Mrozek

Yanıtlar:


19

ySürecin standartlarına tek bir yazı yazmak istiyorsanız , bunu yapabilirsiniz:

(echo y | nohup myprocess) &

yGelen her istem için yazmaya devam etmek istiyorsanız , coreutil yestam olarak bu amaç için var - stdout'a söylediğiniz her şeyi yazmaya devam edecek. Varsayılan değeri "y" çıktısıdır, böylece şunları yapabilirsiniz:

(yes | nohup myprocess) &

ama başka bir şeye ihtiyacınız varsa, onu bir argüman olarak iletebilirsiniz


+1: yes
Eeonlarda

Michael, hızlı cevabın için teşekkürler. Ancak, Y'yi sürece yansıtıp önerinizi denedim. Bunu yaptığımda, bir ve benim olduğumu garanti ettiğim halde çıktı her zaman terminalime dökülür

&, İşlem çıktısının konsola yazılmasını engellemez. Sadece arka planda başlar.
fschmitt

bunun soru ile nasıl bir ilgisi var?

@Riccardo Biraz denedim ve haklı olduğunu düşünüyorum. Düzeltildi, teşekkürler
Michael Mrozek
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.