Soru Bir işlemi terminalinden ayırmak mümkün mü? (Ya da, “Ekranı kullanmalıydım!”) [Çift]


Olası Kopyalama:
Halihazırda başlatılmış 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 süreceğini biliyorum.

Bu işi ekrana daha yeni başlamış olsaydım, evden ayrılıp gidebilirdim. Ama ben yapmadım.

İşi ssh oturumundan ayırmanın bir yolu var mı, bu yüzden bilgisayarımı kapatabilirim (TCP bağlantısını bırakıp ssh oturumunu öldürerek) ve programın çalışmaya devam etmesini sağlayabilir miyim?

Çıktısını umursamıyorum - aslında, stdout'u bir dosyaya yönlendirdim. Ben sadece bitirmek için koşmak istiyorum.


116
2017-07-01 22:16


Menşei




Cevaplar:


Basabilirsiniz ctrl-z işlemi kesmek ve sonra çalıştırmak bg arka planda çalışmasını sağlamak için.

Numaralandırılmış bir liste ile bu şekilde arka planlanmış tüm süreçleri gösterebilirsiniz. jobs.

Sonra koşabilirsin disown %1 (replace 1 tarafından işlem numarası çıkışı ile jobs) işlemi terminalden ayırmak.

İsmine rağmen, işlemden sonra işlem hala size ait olacaktır. disown, sadece başladığınız terminalden ayrılacaktır.

Bu cevap daha fazla bilgi içeriyor


157
2017-07-01 22:26



Bu prosedürü denemek ne kadar güvenli? Herhangi bir şey var mı? - ndemou


Aradığın komutun "disown" olduğuna inanıyorum.


17
2017-08-19 16:32





Bash kabuğunun içinden:

control+z

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

bg

Sonra yazabilirsiniz jobs  işleminizin hala devam edip etmediğini görmek için.


8
2017-07-01 22:23



Kabuğumu kapattığımda öldürmeyecek mi? - mike
Hayır. En azından bash koşuyor olsanız olmaz. İş, ssh oturumunuzun PPID'sinden ayrılacak ve yine de sunucuda kullanıcı adınız olarak yayınlanacak. - Joe
Yukarıdaki talimatlar, kabuğu kapattığınızda işlemin çıkmasına neden olacaktır. Ek olarak, 'disown' komutunu / builtin'i (bu, bash'ta) çalıştırmanız gerekir, bu da işlemi kabuktan ayırır ve çıkışta HUP sinyalini göndermez. - Mark
Bash [3.2.25 (1) -release (i686-redhat-linux-gnu)] versiyonumda, süreci test ettim ve işi kesmeden önce işi reddetmek zorunda kalmadı. Çocuk PID'si ana PID'den ayrıldı ve kullanıcı adımım olarak kesintisiz olarak çalışmaya devam etti. YMMV, sanırım. - Joe


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


5
2018-05-16 14:07





kullanım
nohup komutu ve

Güzel:
root @ index: ~ # nohup / usr / bin / kıvrımlı localhost / begemot.php &
[1] 894
root @ index: ~ # nohup: girişi görmezden gelir ve çıktıyı nohup.out'a ekler

ve bu terminalin çıkışı, bir görev devam edecek ...

5
2018-05-24 09:23





Crtl-Z kullanarak bg veya komutunu çalıştırdığınızda% 100 güvenilir değildir. Çoğu durumda çalışır, ancak bazı durumlarda beklendiği gibi çalışmayabilir (I / O kullanımı, ...).
Ekran güvenilir bir çözümdür.


4
2017-07-01 22:34



Bu retty (unutmayınpasky.or.cz/~pasky/dev/retty) ekranın dışında çalışan bir işlemi ekrana taşımanıza izin veren bir araçtır. Unutursanız, size bir ekranda iş yapmak yararlı olabilir. Sonra, işin durması riski olmadan ekrandan güvenle çıkabilirsiniz. - radius


Kurmaya koyuldum screen Bu sorunu önlemek için düzenli olarak kullandığım ana bilgisayarlara bağlandığımda otomatik olarak çalıştırılacak.

http://tlug.dnho.net/?q=node/239 Dışarıda başka varyasyonlar olsa da, bunu yapmanın bir yolu.

Beklenmedik bir bağlantı kesintisi yaşandığımda beni bir veya iki kez kurtardı ve aksi takdirde başlamayı unutmuş olurdum screen uzunca bir şey yapmaya başlamadan önce.


4
2017-07-01 22:50





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

İş kontrolü (adam bash)

 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 etmek 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.

3
2017-07-01 22:23



Bilgisayarımı kapattığımda, SSH seansını kırarak ve kabuğu öldürdüğümde öldürmeyecek mi? - mike
Bekle, yerel bilgisayardaki komutu çalıştırıyor ve bazı giriş / çıkışlar için SSH kullanıyor musunuz? Yoksa bu uzak bilgisayarda mı çalışıyor? Komut uzak bilgisayarda çalışıyorsa, arka planı ve bağlantısını kesebilmeniz gerekir. - Zoredache


Önceden çalıştığını önceden biliyorsanız, unix komutu en iyi bir seçenektir. Tekrarlanan bir cron işi gibi, planlanan zamanda arka planda komutlar başlatır. Dağıtımınıza bağlı olarak, onu yüklemeniz ve atd sunucusunu başlatmanız gerekebilir.


2
2018-04-04 12:58