Jinsi ya kuweka michakato inayoendelea baada ya kumaliza kikao cha ssh?


Nenda kwa jibu lililokubaliwa


Wacha sema mimi nizindua rundo la michakato kutoka kikao cha ssh. Je! Inawezekana kumaliza kikao cha ssh wakati kutunza michakato hiyo inayoendesha kwenye mashine ya mbali?


668





2010-10-21




Idadi ya majibu: 15


Unapaswa kutafuta njia mbadala za kisasa kama tmux .

tmux ni bora kuliko screen kwa sababu nyingi, hapa kuna mifano kadhaa:

  • Windows inaweza kuhamishwa kati ya kikao na hata kuunganishwa na vikao vingi
  • Windows inaweza kugawanyika kwa usawa na wima ndani ya paneli
  • Msaada kwa vituo vya rangi vya UTF-8 na 256
  • Vipindi vinaweza kudhibitiwa kutoka kwa ganda bila haja ya kuingia kwenye kikao

Utendaji wa kimsingi

Ili kupata utendaji sawa kama ilivyoelezwa katika jibu linapendekeza screen , utahitaji kufanya yafuatayo:

  • ssh kwenye mashine ya mbali
  • anza tmux kwa kuandika tmux kwenye ganda
  • anza mchakato unayotaka ndani ya tmux kikao kilichoanza
  • acha / kizuie tmux kikao kwa kuandika Ctrl+ bhalafud

Sasa unaweza kutoka kwa salama kutoka kwa mashine ya mbali, michakato yako itaendelea kufanya kazi ndani tmux . Unaporudi tena na unataka kuangalia hali ya mchakato wako unaweza kutumia tmux attach kushikamana na tmux kikao chako .

Ikiwa unataka kuwa na vikao vingi vinavyoendesha kando, unapaswa kutaja kila kikao kutumia Ctrl+ bna $ . Unaweza kupata orodha ya vikao vinavyoendesha sasa kwa kutumia tmux list-sessions , sasa ambatika kwenye kikao kinachoendesha na amri tmux attach-session -t <session-name> .

tmux inaweza kufanya vitu vya juu zaidi kuliko kushughulikia dirisha moja kwenye kikao kimoja. Kwa habari zaidi angalia man tmux au tmux GitHub ukurasa . Hasa, hapa kuna FAQ kuhusu tofauti kuu kati ya screen na tmux .


779


2012-11-23

Chaguo 1: nohup

Njia bora mara nyingi ni rahisi zaidi.

 nohup long-running-command &
 

Ilifanywa mahsusi kwa hili, hata magogo hukauka kwa nohup.log .

 man nohup
 

Chaguo 2: bg

Ikiwa unataka "kuweka msingi" kazi kadhaa tayari, basi bet yako bora ni Ctrl+ Zkisha kukimbia

 bg
 

kuweka kazi yako iliyosimamishwa hivi karibuni, kuiruhusu iendelee kufanya kazi.

Halafu haraka disown inapaswa kuweka mchakato unaendelea baada ya kutoka.

screen na wengine wanaweza kuifanya, lakini sio hiyo wanayo. Ninapendekeza nohup kwa kazi unajua kuwa utaacha nyuma na bg kwa kazi ambazo tayari unaendesha na hautaki kuanza tena.

Kumbuka, zote mbili ni maalum. Ikiwa hautumii bash, basi amri zinaweza kuwa tofauti.


321


2012-11-28

Unaweza kufanya hivyo kwa kutumia screen .

Chapa man screen ili kujua zaidi au usome ukurasa huu wa mtu wa skrini .

Hali rahisi:

  • ssh kwenye sanduku lako la mbali. Andika screen Kisha anza mchakato unayotaka.

  • Vyombo vya habari Ctrl- Abasi Ctrl- D. Hii "itafuta" kikao chako cha skrini lakini itaacha michakato yako ikiendelea. Sasa unaweza kutoka kwenye sanduku la mbali.

  • Ikiwa unataka kurudi baadaye, ingia tena na andika screen -r Hii "itaendelea tena" kikao chako cha skrini, na unaweza kuona matokeo ya mchakato wako.


212


2010-10-21

Screen na nohup ndiyo njia bora, lakini ikiwa itabidi utafute mchakato tayari unaendesha bila skrini au nohup unaweza kukimbia amri ya kutukana.

disown [-ar] [-h] [ jobspec … | pid … ]

Bila chaguzi, futa kila workspec kwenye meza ya kazi inayofanya kazi. Ikiwa -h chaguo limepewa, kazi hiyo haiondolewa kwenye meza, lakini imewekwa alama ili SAWUP haitumiwi kazi ikiwa ganda linapokea SUREUP. Kama jobspec haipo, na wala -a wala -r chaguo hutolewa, kazi ya sasa ni kutumika. Ikiwa hakuna ajirapecl inayotolewa, -a chaguo linamaanisha kuondoa au kuweka alama kwa kazi zote; -r chaguo bila jobspec hoja inapinga operesheni ya mbio ajira.

Kwa kukataliwa unaweza kufunga terminal na kupata mchakato unaendelea kwenye mashine.


86


2010-10-21

Nilikuwa nimekwama kwenye mv kubwa kwa hivyo sikuwa katika nafasi ya kuacha mchakato, kusanidi skrini na kisha kuianza tena. Nilifanikiwa kutoka kwenye kikao cha ssh na mchakato unaendelea kwa kimsingi kufanya hatua zifuatazo:

  1. ssh [seva]
  2. amri
  3. Ctrl+Z
  4. bg
  5. kataa [mchakato wa pid hiari, defaults to last]
  6. Utgång

Hatua ya 3 inasimama mchakato wa sasa (mfano amri yangu ya 'mv').
Hatua ya 4 inaweka mchakato wa pause kwa nyuma na kuanza tena.
Hatua ya 5 hukuruhusu kukataa mchakato. ** Kupata orodha ya kazi tu aina jobs kabla.


** Kuhusiana na kujikana (kutoka kwa mwongozo wa bash):

 disown [-ar] [-h] [jobspec ... | pid ... ]
              Without  options,  remove  each jobspec from the table of active
              jobs.  If jobspec is not present, and neither the -a nor the  -r
              option  is  supplied, the current job is used.  If the -h option
              is given, each jobspec is not removed from  the  table,  but  is
              marked  so  that  SIGHUP  is  not  sent  to the job if the shell
              receives a SIGHUP.  If no jobspec is  supplied,  the  -a  option
              means  to  remove or mark all jobs; the -r option without a job‐
              spec argument restricts operation to running jobs.   The  return
              value is 0 unless a jobspec does not specify a valid job.
 

53


2013-11-25

Kuna programu mbili kuu ambazo unaweza kutumia kudumisha mipango na hali ya wastaafu juu ya viunganisho vingi vya ssh. Ni skrini (inayoweza kufanya, lakini kwa bahati mbaya haijasimamiwa. Inaonekana kuwa inaendelezwa sasa ) na tmux (mpya zaidi, inayodumishwa kikamilifu). Byobu ni mwisho wa mbele ambao unaweza kukimbia juu ya mifumo hii na kutoa maelezo ya hali ya juu ya ubuntu. Kwa usanikishaji mpya itatumia tmux kama kirudishi, ikiwa unayo usanidi wa zamani wa Lobu na usanidi uliopo utadumisha utaftaji wa zamani, iwe skrini au tmux.

Byobu

Byobu inaweza kusanikishwa kwenye kompyuta kwa kufanya hivyo kwa mashine inayotegemea Debian:

 sudo aptitude install byobu
 

Kutumia yum, unafanya

 su -c 'yum install byobu'
 

Inawezekana pia kusanikisha Ukarabati kwenye usambazaji mwingine.

Kutumia kwelibu

Unaweza kuanza Habaribu kwa kuendesha byobu kwenye mashine ya mwenyeji baada ya kuunganisha kwa kutumia ssh. Hii itakupa ganda ambalo linaonekana kama hii:


picha-ukweli

Unaweza pia kutumia terminal ya Byobu kwenye mashine ya Ubuntu na chaguo la -X na kuwa na urahisi mzuri wa kufanya kazi kikamilifu.

Matumizi:

Anza ukweli kwa kuandika byobu .

Unaweza kubonyeza F2 kuunda dirisha mpya ndani ya kikao cha sasa, F3-F4 kubadili kati ya windows anuwai.

Sehemu nzuri juu ya ukweli ni, huna lazima kuua michakato inayoendesha katika terminal kuacha terminal. Unaweza kutuma tu skrini / tmux (mifupa ya ukweli) kwa nyuma na kuanza tena wakati mwingine utakapokuja:

  • Kuacha ukweli na kuifanya iendelee (detach) bonyeza F6.
  • Wakati mwingine utakapokuja, fanya tu byobu na wewe urudi nyumbani hapo ulipokuwa.


    kweli-detach-ambatisha

Unaweza pia kuunda vikao mbalimbali vya Sekubu byobu -S session1 na kadhalika. Na unaweza kuungana na mmoja wao unaporudi.

Unaweza kufanya mengi zaidi kwa kutumia Byobu. Itumie! Miongozo kadhaa dhahiri iko hapa , au hapa .


22


2012-11-24

Hauwezi kufanya hivi mara mchakato umeanza, unahitaji kuweka vitu kabla ya kufanya kazi ya muda mrefu.

Unaweza kutumia nohup lakini hekima ya kisasa inapendekeza utumie skrini au njiabu kama kuingia kwako ili uweze kupata na kuacha mambo yakiendesha.

Screen ina faida ambayo unaweza kutoka kwa mashine moja na kuiga kutoka kwa nyingine ambayo ni muhimu ikiwa unataka kuangalia michakato mirefu inayoendelea zaidi ya mwisho wa siku ya kufanya kazi.

Kuna mwongozo unaofaa wa kuanza skrini hapa.

Kwabu inaweka kiunzi rahisi cha kutumia juu ya skrini na menyu nk Pia ni utekelezaji wa skrini mpya juu ya ubuntu mpya. F2 kuanza terminal mpya F3 / F4 kugeuza kurudi na nyuma na F6 kwa kukatwa. Aina ya kutoka ili kumaliza vituo kabisa.


18


2010-10-21

Halo, wakati nilikubali kwamba skrini ndiyo chaguo bora zaidi. Unaweza kutumia vncserver na kisha kuanza mchakato juu yake.

Pia ikiwa nia yako tu ni kufanya mchakato uanze na hakuna haja ya kuudhibiti, na muhimu kabisa haukujua utahitaji kufunga kikao na una mchakato tayari unaendelea, hauna bahati ikiwa ulitumia bash kama ganda

Kwanza unahitaji kutuma mchakato nyuma kwa kuandika Ctrl + Z ikifuatiwa na bg% 1 (nambari inategemea nambari ya kazi, kawaida ni 1, lakini unaweza kuvuta orodha kwa urahisi kwa kutumia kazi za amri)

Mwishowe ruhusu amri ikataliwa (ikifuatiwa na mfanyakazi ... sawa na amri ya bg)

Hii itaondoa uhusiano wa mzazi na mtoto kati ya ganda lako na mchakato nyuma, ukizuia kufa wakati ganda lako limekomeshwa.


8


2011-06-06

Kwa hati moja ya shell ambayo nimeendesha kwa muda mrefu, nitaingia, na kuendesha mchakato nyuma kwa kutumia '&'.

Mfano:

 /path/to/my/script &
 

Nimeingia na kukatiza kikao changu cha SSH. Ninapoingia wakati fulani baadaye, hati bado inafanya kazi kama inavyothibitishwa na ukusanyaji wa data unaoendelea kutoka kwa hati.


8


2014-07-29

Unapaswa kuangalia skrini ya GNU na uone ikiwa inakusaidia. Kulingana na jinsi unahitaji programu utekeleze kwa wakati halisi, inaweza kusababisha maswala mengi kuliko vile unavyosuluhisha, lakini angalau itakuruhusu kuendelea tena na kikao chako kama haujawahi kuiacha.

Jinsi ya kutumia :

  • Tumia amri screen kwa kuanza kwanza, tembeza ujumbe wa utangulizi, unapaswa kukabidhiwa kituo.
  • Ca Cc inafungua terminal nyingine
  • Ca Ck unaua terminal
  • Unaweza kutumia nafasi ya Ca C-nafasi na Ca C-Backspace kuzunguka kupitia vituo
  • Ca Ca ni muhimu ikiwa unatumia vituo viwili tu
  • Ca C huondoa kikao cha skrini cha sasa na hutoka skrini. Kisha unaweza kutumia screen -r kuanza tena kikao hicho. Unaweza kuwa na vikao kadhaa vya skrini vilivyofungiwa mara moja, kwa hali hii utaonyeshwa orodha ya vipindi vinavyopatikana.

Kuna chaguzi zingine nyingi, kwa mfano skrini za mgawanyiko, na pia njia zote za mkato zinafaa kabisa.


4


2012-05-22

Jibu rahisi ...

ctrl + z itasimamisha programu inayoendesha

"bg" itaendesha nyuma


3


2013-08-13

Njia rahisi ni kuendesha agizo lako nyuma na & . Kisha tu andika:

 disown -a
 

3


2017-01-11

Wakati kila mtu anasema kutumia disown (chaguo pekee ulichonacho baada ya kuanza mchakato),, nohup au hata kuamuru amri hiyo screen , ambayo ni muhimu ikiwa unataka kuona matokeo yote kutoka kwa amri ... mimi ni shabiki wa screen .. Bado nimejaribu ugawaji wa kawaida wa Linux na kuweka kazi mbele na kuacha kazi haisababishi michakato yote ambayo inakaribia kufa. Lazima kuwe na mpangilio wa ulimwengu au kitu. Ninajaribu hii kwenye mifumo mingine ya zamani (slackware 12) na hati yangu ya majaribio inaendelea kufanya kazi hadi nitauua kwa mikono:

 shell$ cat > test.pl

#!/usr/bin/perl
while(1){
     sleep(1);
}
    shell$ perl ./test.pl &
    shell$ exit
    logout
    shell$ ps aux test.pl
    mymom 31337     1  0 13:25 ?        00:00:00 perl ./test.pl
    shell$ 
 

Wakati nakubali kwamba screen hiyo itakuwa njia bora ya kuendesha hii, hata kama hati yangu iliandika kwa faili za logi au chochote .. Sijawahi kuhitaji kutumia disown -a au nohup isipokuwa ilikuwa nje ya paranoia kamili. Labda mtu anaweza kutoa nuru juu ya jinsi bash inavyotenda kwa default? Labda wasimamizi wengine wa mfumo hubadilisha defavers kwenye ganda kubwa ili kuzuia michakato ya watumiaji wao kupakia mfumo zaidi?


0


2015-07-29

Kwa bahati mbaya, kikao cha SSH kilichomalizika kinaweza kusababisha tmux au skrini kuuawa. Hii ni kwa sababu systemd itasimamisha michakato yoyote ya mtoto baada ya kuingia kwenye kikao.

Unaweza kubadilisha mpangilio huu katika logind.conf ( /etc/systemd/logind.conf ):

 KillUserProcesses=no
 

Asante kwa kujibu katika https://unix.stackexchange.com/questions/490267 .


0


2019-06-23

Badala ya :

 cmd options; 
 

Ongeza kabla nohup :

 nohup cmd options & 
 

Halafu, utakuwa na uwezo wa kuona kiweko kikiwa na:

 tail -f nohup.out
 

-1


2016-10-22