it-swarm-tr.com

Bir işlemi terminalinden ayırmak mümkün mü? (Veya "Ekranı kullanmalıydım!")

Olası Kopya:
Başlamış bir işlemi Nohup/ekranlayabilir miyim?

Unix'te (özellikle Linux), düzenli bir ssh-> bash oturumunda bir işe başladım. Yakında işten ayrılmak istiyorum, ama şimdi işin birkaç saat alacağını anlıyorum.

Bu işe daha yeni başlamış olsaydım, ayrılabilir ve eve gidebilirdim. Ama etmedim.

İşi ssh oturumundan çıkarmanın herhangi bir yolu var mı, bu yüzden bilgisayarımı kapatabilirim (TCP bağlantıyı bırakarak ve ssh oturumunu öldürmek) ve programın çalışmaya devam etmesini sağlayabilir miyim?

Çıktısı umurumda değil - aslında, stdout'u bir dosyaya yönlendirdim. Sadece bitirmesini istiyorum.

146
mike

İşlemi kesmek için ctrl-z Tuşuna basabilir ve ardından arka planda çalışmasını sağlamak için bg çalıştırabilirsiniz.

Bu şekilde arka plana sahip tüm işlemleri jobs ile numaralandırılmış bir liste gösterebilirsiniz.

Ardından, işlemi terminalden ayırmak için disown %1 (1 Yerine jobs ile işlem numarası çıktısını koyabilirsiniz) çalıştırabilirsiniz.

İsme rağmen, disown çalıştırıldıktan sonra işlem hala size ait olacak, sadece başlattığınız terminalden ayrılacaktır.

Bu cevapta daha fazla bilgi var

201
David Pashley

Aradığınız komutun "reddedilmesi" olduğuna inanıyorum

21
Seigel
 Kullanın 
 Nohup komutu & 
 
 Çok güzel: 
 Root @ index: ~ # Nohup/usr/bin/curl localhost/begemot.php & 
 [1] 894 
 Root @ index: ~ # Nohup: girişi yok saymak ve çıktıyı `` Nohup.out '' 
 
 'A ve bu terminalin çıkışına eklemek, bir görev devam edecek ... 
13

Bash Shell'inizden:

control+z

Ardından, işi arka planda çalıştırmaya devam etmek için:

bg

Daha sonra, işleminizin hala çalışıp çalışmadığını görmek için jobs yazabilirsiniz.

9
Joe

reptyr iç ekran kullanırken, işlemi (veya çıktısını) ekrana taşıyabilirsiniz.

8
mab

Bu sorunu önlemek için düzenli olarak kullandığım ana bilgisayarlara bağlandığımda otomatik olarak çalışacak screen ayarına geçtim.

http://tlug.dnho.net/?q=node/239 bunu yapmanın bir yoludur, ancak başka varyasyonlar da vardır.

Seansın ortasında beklenmedik bir bağlantı kesildiğimde beni bir veya iki kez kurtardı ve aksi takdirde uzun soluklu bir şeye başlamadan önce screen 'ı başlatmayı unuturdu.

7
David Spillett

Crtl-Z sonra bg kullanmak veya komutu kullanırken & kullanmak% 100'de güvenilir değildir. Çoğu durumda çalışır, ancak bazı durumlarda beklendiği gibi çalışmayabilir (G/Ç kullanımı, ...).
Ekran güvenilir bir çözümdür.

6
radius

Eğer bash kullanıyorsanız, control-Z ve bg ile arka plandan şüphelenebilirsiniz.

İş kontrolü (man bash'tan)

 If the operating system on which bash is running supports job 
 control, bash contains facilities to use it.   Typing the  
 suspend  character  (typically ^Z, Control-Z) while a process 
 is running causes that process to be stopped and returns control 
 to bash.  Typing the delayed suspend character (typically ^Y, 
 Control-Y) causes the process  to  be stopped  when  it  
 attempts to read input from the terminal, and control to be 
 returned to bash.

yardım bg

bg: bg [job_spec ...]
    Place each JOB_SPEC in the background, as if it had been started with
    `&'.  If JOB_SPEC is not present, the Shell's notion of the current
    job is used.

yardım işleri

jobs: jobs [-lnprs] [jobspec ...] or jobs -x command [args]
    Lists the active jobs.  The -l option lists process id's in addition
    to the normal information; the -p option lists process id's only.
5
Zoredache

Önceden arka planda çalışmasını istediğinizi biliyorsanız, unix komutu at iyi bir seçenektir. Komutları planlanan zamanda arka planda başlatır, tıpkı tekrarlamayan bir cron işi gibi. Dağıtımınıza bağlı olarak, yüklemeniz ve atd arka plan programını başlatmanız gerekebilir.

4
Sylvain