Njia 5 za Kuweka Vikao na Taratibu za SSH za Mbali Baada ya Kukatwa


SSH au Secure Shell kwa maneno rahisi ni njia ambayo mtu anaweza kufikia mtumiaji mwingine kwa mbali kwenye mfumo mwingine lakini kwa mstari wa amri tu yaani hali isiyo ya GUI. Kwa maneno ya kiufundi zaidi, tunapotumia ssh kwa mtumiaji mwingine kwenye mfumo mwingine na kutekeleza amri kwenye mashine hiyo, kwa kweli huunda kituo cha uwongo na kukiambatanisha na ganda la kuingia la mtumiaji aliyeingia.

Tunapotoka kwenye kikao au muda wa kikao kuisha baada ya kutokuwa na shughuli kwa muda mrefu, ishara ya SIGHUP inatumwa kwa kituo cha uwongo na kazi zote ambazo zimeendeshwa kwenye terminal hiyo, hata kazi ambazo zina kazi zao za wazazi. kuanzishwa kwenye pseudo-terminal pia hutumwa ishara ya SIGHUP na wanalazimika kusitisha.

Ni kazi ambazo zimesanidiwa kupuuza mawimbi hii ndizo zitakazosalia baada ya kusitishwa kwa kipindi. Kwenye mifumo ya Linux, tunaweza kuwa na njia nyingi za kufanya kazi hizi ziendeshwe kwenye seva ya mbali au mashine yoyote hata baada ya kuondoka kwa mtumiaji na kusitishwa kwa kipindi.

Kuelewa Michakato kwenye Linux

Michakato ya kawaida ni ile iliyo na muda wa maisha wa kipindi. Huanzishwa wakati wa kipindi kama michakato ya mbeleni na kuishia katika muda fulani au kipindi kinapoondolewa. Michakato hii ina mmiliki wake kama mtumiaji yeyote halali wa mfumo, pamoja na mzizi.

Michakato ya watoto yatima ni ile ambayo hapo awali ilikuwa na mzazi ambaye ndiye aliunda mchakato huo lakini baada ya muda, mchakato wa mzazi ulikufa au kuharibika, na hivyo kufanya mzazi kuwa mzazi wa mchakato huo. Michakato kama hii ina init kama mzazi wao wa karibu ambaye husubiri michakato hii hadi wafe au mwisho.

Hizi ni baadhi ya michakato ya kimakusudi iliyofanywa kuwa yatima, michakato kama hiyo ambayo imeachwa kwa kukusudia kwenye mfumo inaitwa daemon au michakato ya kukusudia yatima. Kawaida ni michakato ya muda mrefu ambayo mara moja huanzishwa na kisha kutengwa kutoka kwa terminal yoyote ya kudhibiti ili iweze kukimbia chinichini hadi isikamilike, au kuishia kutupa makosa. Mzazi wa michakato kama hii hufa kimakusudi akifanya mtoto atekelezwe chinichini.

Mbinu za Kuweka Kipindi cha SSH Kikiendelea Baada ya Kukatwa

Kunaweza kuwa na njia tofauti za kuacha vikao vya ssh vikiendelea baada ya kukatwa kama ilivyoelezewa hapa chini:

skrini ni Kidhibiti Dirisha cha maandishi cha Linux ambacho huruhusu mtumiaji kudhibiti vipindi vingi vya wastaafu kwa wakati mmoja, kubadilisha kati ya vipindi, kuweka kumbukumbu za vipindi kwa vipindi vinavyoendeshwa kwenye skrini, na hata kuanzisha tena kipindi wakati wowote tunapotaka bila kuwa na wasiwasi kuhusu kipindi kurekodiwa. nje au terminal imefungwa.

vipindi vya skrini vinaweza kuanzishwa na kisha kuzuiwa kutoka kwa terminal inayodhibiti na kuziacha zikifanya kazi chinichini na kisha kuanzishwa tena wakati wowote na hata mahali popote. Unahitaji tu kuanza kipindi chako kwenye skrini na unapotaka, iondoe kutoka kwa pseudo-terminal (au terminal ya kudhibiti) na uondoke. Unapohisi, unaweza kuingia tena na kuendelea na kipindi.

Baada ya kuandika amri ya ‘skrini’, utakuwa katika kipindi kipya cha skrini, ndani ya kipindi hiki unaweza kuunda madirisha mapya, kupita kati ya madirisha, kufunga skrini, na kufanya mambo mengi zaidi ambayo unaweza kufanya kwenye terminal ya kawaida.

$ screen

Mara tu kipindi cha skrini kitakapoanza, unaweza kuendesha amri yoyote na kuweka kikao kikiendelea kwa kuzima kikao.

Wakati tu unataka kuondoka kwenye kikao cha mbali, lakini unataka kuweka kikao ulichounda kwenye mashine hiyo hai, basi unachohitaji kufanya ni kuondoa skrini kutoka kwa terminal ili isiwe na terminal ya kudhibiti iliyobaki. Baada ya kufanya hivi, unaweza kuondoka kwa usalama.

Ili kuondoa skrini kutoka kwa terminal ya mbali, bonyeza tu \Ctrl+a ikifuatiwa mara moja na \d na utarudi kwenye terminal kuona ujumbe huo. Skrini imetengwa. Sasa unaweza kuondoka kwa usalama na kipindi chako kitaachwa hai.

Iwapo ungependa Kurejesha kipindi cha skrini kilichofungiwa ulichoacha kabla ya kuondoka, ingia tu tena kwenye terminal ya mbali tena na uandike \screen -r iwapo skrini moja tu itafunguliwa, na ikiwa vipindi vingi vya skrini vinafunguliwa kwa kukimbia \screen -r .

$ screen -r
$ screen -r <pid.tty.host>

Ili Kujifunza zaidi juu ya amri ya skrini na jinsi ya kuitumia fuata tu kiunga: Tumia Amri ya skrini Kusimamia Vikao vya Kituo cha Linux.

Tmux ni programu nyingine ambayo imeundwa kuchukua nafasi ya skrini. Ina uwezo mwingi wa skrini, ikiwa na uwezo machache wa ziada unaoifanya kuwa na nguvu zaidi kuliko skrini.

Inaruhusu, mbali na chaguo zote zinazotolewa na skrini, vidirisha kugawanyika kwa usawa au wima kati ya madirisha mengi, kubadilisha ukubwa wa vidirisha vya dirisha, ufuatiliaji wa shughuli za kipindi, kuandika hati kwa kutumia hali ya mstari wa amri n.k. Kutokana na vipengele hivi vya tmux, imekuwa ikifurahia kupitishwa kwa karibu kwa karibu. usambazaji wote wa Unix na hata imejumuishwa katika mfumo wa msingi wa OpenBSD.

Baada ya kufanya ssh kwenye seva pangishi ya mbali na kuandika tmux, utaingia kwenye kikao kipya na dirisha jipya linalofungua mbele yako, ambapo unaweza kufanya chochote unachofanya kwenye terminal ya kawaida.

$ tmux

Baada ya kufanya shughuli zako kwenye terminal, unaweza kuondoa kikao hicho kutoka kwa terminal ya kudhibiti ili iende chinichini na uweze kuondoka kwa usalama.

Unaweza kuendesha \tmux detach unapoendesha kipindi cha tmux au unaweza kutumia njia ya mkato (Ctrl+b kisha d). Baada ya haya kipindi chako cha sasa kitatengwa na utarudi kwenye terminal yako kutoka ambapo unaweza kutoka kwa usalama.

$ tmux detach

Ili kufungua tena kipindi ambacho ulitenganisha na kuacha kama ilivyokuwa wakati umetoka kwenye mfumo, ingia tena kwenye mashine ya mbali na uandike \tmux ambatisha ili kuambatanisha tena na kipindi kilichofungwa na bado kitakuwa pale. Kimbia.

$ tmux attach

Ili Kujifunza zaidi kuhusu tmux na jinsi ya kuitumia fuata tu kiungo: Tumia Tmux Terminal Multiplexer Kudhibiti Vituo Vingi vya Linux.

Ikiwa hujui skrini au tmux, unaweza kutumia nohup na kutuma amri yako ya muda mrefu kwenye mandharinyuma ili uweze kuendelea huku amri ikiendelea kutekeleza chinichini. Baada ya hapo unaweza kutoka kwa usalama.

Kwa amri ya nohup tunaambia mchakato wa kupuuza ishara ya SIGHUP ambayo hutumwa na kikao cha ssh juu ya kusitisha, na hivyo kufanya amri iendelee hata baada ya kuondoka kwa kikao. Kwenye kuondoka kwa kikao, amri imeondolewa kwenye udhibiti wa terminal na inaendelea kufanya kazi chinichini kama mchakato wa daemon.

Hapa, kuna hali rahisi ambayo, tumeendesha find amri ya kutafuta faili nyuma kwenye kikao cha ssh kwa kutumia nohup, baada ya hapo kazi hiyo ilitumwa kwa nyuma na kurudi haraka ikitoa PID na kitambulisho cha kazi cha mchakato ([ JOBID] PID).

# nohup find / -type f $gt; files_in_system.out 2>1 &

Unapoingia tena, unaweza kuangalia hali ya amri, kuirejesha mbele kwa kutumia fg %JOBID kufuatilia maendeleo yake na kadhalika. Hapo chini, matokeo yanaonyesha kuwa kazi ilikamilishwa kwani haionyeshi wakati wa kuingia tena, na imetoa matokeo ambayo yanaonyeshwa.

# fg %JOBID

Njia nyingine maridadi ya kuruhusu amri yako au kazi moja iendeshwe chinichini na kubaki hai hata baada ya kuondoka kwa kipindi au kukatwa ni kwa kutumia kujikana.

Kukataliwa, huondoa kazi hiyo kwenye orodha ya kazi ya mchakato wa mfumo, kwa hivyo mchakato huo unalindwa dhidi ya kuuawa wakati wa kukatwa kwa kipindi kwani haitapokea SIGHUP na ganda unapoondoka.

Ubaya wa njia hii ni kwamba, inapaswa kutumika tu kwa kazi ambazo haziitaji pembejeo yoyote kutoka kwa stdin na wala hazihitaji kuandika kwa stdout, isipokuwa utaelekeza mahususi pembejeo na matokeo ya kazi, kwa sababu wakati kazi itajaribu kuingiliana na stdin. au stdout, itasimama.

Hapo chini, tulituma ping amri kwa usuli ili ut iendelee na kuondolewa kwenye orodha ya kazi. Kama inavyoonekana, kazi hiyo ilisimamishwa kwa mara ya kwanza, baada ya hapo ilikuwa bado kwenye orodha ya kazi kama Kitambulisho cha Mchakato: 15368.

$ ping linux-console.net > pingout &
$ jobs -l
$ disown -h %1
$ ps -ef | grep ping

Baada ya ishara hiyo iliyokataliwa kupitishwa kwa kazi, na iliondolewa kwenye orodha ya kazi, ingawa ilikuwa bado inaendelea nyuma. Kazi bado ingekuwa inaendelea wakati ungeingia tena kwa seva ya mbali kama inavyoonekana hapa chini.

$ ps -ef | grep ping

Huduma nyingine ya kufikia tabia inayohitajika ni setsid. Nohup ina shida kwa maana kwamba kikundi cha mchakato wa mchakato hubaki sawa kwa hivyo mchakato unaoendeshwa na nohup unaweza kuathiriwa na ishara yoyote inayotumwa kwa kikundi kizima cha mchakato (kama Ctrl + C).

set kwa upande mwingine inatenga kikundi kipya cha mchakato kwa mchakato unaotekelezwa na kwa hivyo, mchakato ulioundwa uko katika kikundi kipya cha mchakato uliotengwa na unaweza kutekeleza kwa usalama bila hofu ya kuuawa hata baada ya kuondoka kwa kikao.

Hapa, inaonyesha kuwa mchakato ‘lala 10m’ umetenganishwa na kituo cha kudhibiti, tangu wakati ulipoundwa.

$ setsid sleep 10m
$ ps -ef | grep sleep

Sasa, wakati ungeingia tena kwenye kipindi, bado utapata mchakato huu ukiendelea.

$ ps -ef | grep [s]leep

Hitimisho

Ni njia zipi unazoweza kufikiria ili kuweka mchakato wako uendelee hata baada ya kutoka kwenye kipindi cha SSH? Ikiwa kuna njia nyingine yoyote na nzuri unayoweza kufikiria, itaje katika maoni yako.