Bash betiğini arka planda çalıştır ve terminalden çık


Yanıtlar:


45

Terminal ve kabuğun alt işlemlerine yayılan çıkış sinyallerinden kaçınmak için, komutu çalıştırın nohup, örn .:

nohup cmd &

1
Bu doğru cevap. Nohup olmadan, başlatılan işlem hala terminal işleminin bir "alt öğesi" olarak kabul edilir ve böylece terminal kapatılırsa sonlandırılır.
Izzy

3
cmd & disown&bir ;komut ayırıcısı olarak ele alındığı için de çalışır . Disown komutu, bash shell oturumu ve arka plan komutu arasındaki bağlantıyı kaldırır.
lornix

2
zsh bunun için bir steno vardır: cmd &|.
Thor

Bunun çalışması için Terminal.app'daki bir tercihi değiştirmek zorunda kaldım. Profiller altında, etkin profilinizi seçin, ardından Kabuk> Kabuk çıktığında> Kabuk temiz bir şekilde çıkarsa Kapat
antoine

6

Kullanma screen:

screen -S <session name> -d -m <your command>

bundan sonra terminalden çıkabilirsiniz, ayrıca şu şekilde yeniden bağlayabilirsiniz:

screen -r <session name>

Daha fazla bilgi: referans


4

Terminalden çıktıktan sonra arka planda belirli bir komut veya dosya çalıştırmak istiyorsanız, bu kolay küçük şeyi deneyebilirsiniz;

nohup watch -n5 'bash script.sh' &

Bu scipt.sh dosyasını her 5 saniyede bir çalıştırır.


1
"nohup" zaten kabul edilen cevap tarafından kapsanmaktadır. Ve eminim asker cron'dan bahsetti çünkü periyodik olarak çalıştırmak için "Gelecekte bu komutu birkaç saniye çalıştır" demek için kullanıyorlardı.
David Richerby

1
Cevabım işleri daha da kötüleştirmiyor. Aşağı oylama noktasını görüyor musunuz? Nöral yeterli olacaktır.
jamietelin

3

Komutunuzun arkasına "&" karakteri koyun.

Örneğin:

/home/your/script.sh &

7
bu durumda, terminal kapatıldığında, süreç /home/your/script.sh"ana" öğesinden ayrılmadığı için değil, sadece "arka plan" ile başlatılır . nohupGerçek olarak ayırmak için kullanın .
Izzy

Kötülerim, bunu bilmiyordum, ama Debian'ımı test ettiğimde, komut, onu başlatan kabuğu kapattıktan sonra çalışmaya devam etti: /
Flinth

1
Arka plandaki sürecin tam olarak nereye ve ne zaman eklendiğinden emin değilim. Ancak, örneğin bir uzak makinede oturum açarsanız, oturumu kapatır kapatmaz kesinlikle durdurulur ( kendini arka plan programı dışında ). Bu nedenle,% 100 emin olmak için nohup- nohup.outkomutunu başlattığınız dizinde bulunan adlı bir dosyaya tüm (şimdi görünmez) çıktıları kaydeder .
Izzy

Tamam, açıklamalarınız için teşekkür ederim ^^
Flinth

Bu yanıt, jobskomutla birleştirildiğinde düzgün çalışabilir . Oldukça sık arka plana sonra kabuk sürecine geri almak istiyorum.
djangofan
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.