2016-03-20 19 views
2

Bir sunucuyu çalıştırıyorum ve aşağıdaki komutu parametrelerle yürütmem gerekiyor. Komut dosyaları şu anda harika çalışıyor ancak sorun senaryoyu çalıştırdığım zaman konsola geri dönemem. Konsolda çalışmaya devam ediyor. Bunu zorla durdurursam, süreç de duracak.Bash komut dosyasından çıkın ama işlemi devam ettirin

İşlemi devam ettirip konsola geri dönmek istiyorum.

#!/bin/sh 
php /home/stjc/app/artisan queue:listen --timeout=60 --tries=5 

Teşekkür

cevap

2

Çalıştır o arka planda işlem: Orijinal komutunun iki tarafında parantez ile sonunda bir ve işareti (&) ekleyerek

#!/bin/sh 
(php /home/stjc/app/artisan queue:listen --timeout=60 --tries=5) & 

deneyin.

Düzenleme:

: NOP bir sorun php komut bunu kaçan denemek ve bunun için çalışır eğer görebilirsiniz işletim sisteminize bağlı olarak anlamına gelen bir kabuk yerleşiğidir Eğer

#!/bin/sh 
(php /home/stjc/app/artisan queue\:listen --timeout=60 --tries=5) & 

Ayrıca php yorumlayıcınıza tam yolu koymak kesinlikle tavsiye edilir.

+0

ama bana hata veriyor ": komut bulunamadı" –

+0

Ben komutuyla herhangi bir sorun görmüyorum, onu "php" kodunun kendisinde yapmış olabileceğiniz bir yazım hatası veya yanlış bir şey olabilir. – anand

+0

Bir Windows editörü kullanmış gibi geliyor. Dosyayı düzeltmek için "dos2unix" i kullanın ya da bu konuyla ilgili soruların birini görün - çok sık sorulan bir SSS. – tripleee

1

Sadece komutundan sonra & eklemek ve kabuk backend.It işi çalışacaktır olacak gibi döner bir şey: [1] 3633. [1] kabuk iş kimliği anlamına gelir ve 3633 OS süreç kimliği ifade eder. Görevi durdurmak istiyorsanız, sadece kill 3633 yazın.

#!/bin/sh 
php /home/stjc/app/artisan queue:listen --timeout=60 --tries=5 & 
1

arka planda bir süreci çalıştırmak için bir & at the end of your command kullanabilir veya nohup komut size kabuk çıkmak sonra bile çalışmaya devam tamamen böylece terminalden bir süreç kesmek için.

: command not found hata ayrı bir sorundur. önce numaralı metin, ortamın bulamadığı bir komuttur. :'dan önce hiçbir şey olmadığından boş dizeden oluşan bir komut başlatmaya çalışıyorsunuz; Burada bir örnek: Eğer bir komut olarak kullanıyoruz ve bu nedenle bir şey (boş-string komutu yürütmek için çalışan bir bayan ayarlanmış değişkeni var çünkü Muhtemel şudur

$ foo 
-bash: foo: command not found 
$ '' 
-bash: : command not found 

hangi elbette mevcut değil).

Çalıştır komut VEYA çalıştırmak istediğiniz komutu:

+0

No yardım için teşekkürler, değişken sadece göz ardı edilir. '' baa 'ile baa' 'burada' unset '' burada üretir: komut bulunamadı '' – tripleee

+0

@tripleee Ancak '' $ baa'''' burada 'sorunu çoğaltacaktır. ':' Komutu * yok * var, bu OP'nin hata mesajına neden olmuyor. – dimo414

+0

Kolon komutunun kırmızı bir ringa olduğunu kabul edin. Bu arada, yukarıdaki yorumunda CodeGnome ile yaşıyorum. – tripleee

0

Bir seçenek daha aşağıda açıklandığı gibi arka planda sürecini göndermek için orada örnek

[email protected]~$ ping 10.137.108.192 
PING 10.137.108.192 (10.137.108.192) 56(84) bytes of data. 
64 bytes from 10.137.108.192: icmp_seq=1 ttl=64 time=7.18 ms 
64 bytes from 10.137.108.192: icmp_seq=2 ttl=64 time=0.367 ms 
için

Ctrl + Z komutu çalışırken, Bu arka

012.351 yürütülmesine devam etmek için terminalde

^Z 
[1]+ Stopped     ping 10.137.108.192 

tip bg durdurulacaktır

[email protected]~$ bg 
[1]+ ping 10.137.108.192 & 
[email protected]~$ 64 bytes from 10.137.108.192: icmp_seq=5 ttl=64 time=5.46 ms 
64 bytes from 10.137.108.192: icmp_seq=6 ttl=64 time=4.56 ms 

Yine terminalde fg yazarak ön planda çalıştırabilirsiniz: Çalışır

[email protected]~$fg 
ping 10.137.108.192 
64 bytes from 10.137.108.192: icmp_seq=22 ttl=64 time=0.397 ms 
64 bytes from 10.137.108.192: icmp_seq=23 ttl=64 time=3.99 ms 

(...) 
İlgili konular