5 leiðir til að halda fjarlægum SSH lotum og ferlum í gangi eftir að hafa verið aftengd


SSH eða Secure Shell í einföldu máli er leið þar sem einstaklingur getur fjaraðgengist öðrum notanda á öðru kerfi en aðeins í skipanalínu, þ.e. ekki-GUI ham. Í meira tæknilegu tilliti, þegar við ssh á öðrum notanda á einhverju öðru kerfi og keyrum skipanir á þeirri vél, býr það í raun til gervistöð og festir hana við innskráningarskel notandans sem er skráður inn.

Þegar við skráum okkur út úr lotunni eða lotunni lýkur eftir að hafa verið aðgerðalaus í nokkurn tíma, þá er SIGHUP merki sent til gervistöðvarinnar og öll verkin sem hafa verið keyrð á þeirri flugstöð, jafnvel störfin sem hafa móðurstörfin sín sem ræst er á gervistöðinni eru einnig send SIGHUP merki og neyðast til að hætta.

Aðeins störfin sem hafa verið stillt til að hunsa þetta merki eru þau sem lifa af lokun lotunnar. Í Linux kerfum getum við haft margar leiðir til að láta þessi störf keyra á ytri þjóninum eða hvaða vél sem er, jafnvel eftir að notandi hefur útskráð sig og lotu hætt.

Skilja ferla á Linux

Venjulegir ferlar eru þeir sem hafa líftíma setu. Þeir eru ræstir á meðan á lotunni stendur sem forgrunnsferli og enda á ákveðnu tímabili eða þegar lotan er skráð út. Þessir ferlar hafa eiganda sinn sem einhver af gildum notendum kerfisins, þar með talið rót.

Munaðarlaus ferli eru þau sem upphaflega áttu foreldri sem bjó til ferlið en eftir nokkurn tíma dó foreldri ferlið óviljandi eða hrundi, sem gerir það að verkum að það er foreldri þess ferlis. Slík ferli hafa frumkvæði sitt sem nánasta foreldri sem bíður eftir þessum ferlum þar til þeir deyja eða enda.

Þetta eru viljandi munaðarlaus ferli, slík ferli sem eru viljandi látin keyra á kerfinu eru kölluð púki eða viljandi munaðarlaus ferli. Þetta eru venjulega langvarandi ferli sem eru einu sinni hafin og síðan aftengd frá hvaða stjórnstöð sem er svo að þau geti keyrt í bakgrunni þar til þeim er ekki lokið, eða á endanum kastað villu. Foreldri slíkra ferla deyr viljandi og gerir barnið aflífað í bakgrunni.

Aðferðir til að halda SSH lotu í gangi eftir að hafa verið aftengd

Það geta verið ýmsar leiðir til að láta ssh lotur vera í gangi eftir að hafa verið aftengd eins og lýst er hér að neðan:

skjárinn er textagluggastjórnun fyrir Linux sem gerir notandanum kleift að stjórna mörgum flugstöðvalotum á sama tíma, skipta á milli lota, skráning á lotunni fyrir keyrsluloturnar á skjánum og jafnvel hefja lotuna aftur hvenær sem við viljum án þess að hafa áhyggjur af því að lotan sé skráður út eða flugstöðinni er lokað.

Hægt er að hefja skjálotur og aftengja þær síðan frá stjórnstöðinni þannig að þær keyra í bakgrunni og halda þær síðan áfram hvenær sem er og jafnvel hvar sem er. Þú þarft bara að hefja lotuna þína á skjánum og þegar þú vilt skaltu aftengja hana frá gervistöðinni (eða stjórnstöðinni) og skrá þig út. Þegar þér líður geturðu skráð þig aftur inn og haldið fundinum áfram.

Eftir að þú hefur slegið inn „skjá“ skipunina muntu vera í nýrri skjálotu, í þessari lotu geturðu búið til nýja glugga, farið á milli glugga, læst skjánum og gert margt fleira sem þú getur gert á venjulegri flugstöð.

$ screen

Þegar skjálotan er hafin geturðu keyrt hvaða skipun sem er og haldið lotunni í gangi með því að aftengja lotuna.

Rétt þegar þú vilt skrá þig út af fjarlotunni, en þú vilt halda lotunni sem þú bjóst til á þeirri vél á lífi, þá er bara það sem þú þarft að gera að aftengja skjáinn frá útstöðinni þannig að það sé engin stjórnstöð eftir. Eftir að hafa gert þetta geturðu örugglega skráð þig út.

Til að aftengja skjá frá ytri útstöðinni, ýttu bara á \Ctrl+a strax á eftir \d og þú munt koma aftur í útstöðina og sjá skilaboðin sem skjárinn er aðskilinn. Nú geturðu örugglega skráð þig út og lotan þín verður eftir á lífi.

Ef þú vilt halda áfram aðskildri skjálotu sem þú yfirgafst áður en þú skráðir þig út skaltu bara skrá þig aftur inn á ytri útstöðina aftur og slá inn \screen -r ef aðeins einn skjár er opnaður og ef margar skjálotur eru opnaðar keyrðu \screen -r .

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

Til að læra meira um skjáskipun og hvernig á að nota hana skaltu bara fylgja hlekknum: Notaðu skjáskipun til að stjórna Linux Terminal Sessions

Tmux er annar hugbúnaður sem er búinn til til að koma í staðinn fyrir skjá. Hann hefur flesta möguleika skjásins, með fáum viðbótarmöguleikum sem gera hann öflugri en skjár.

Það gerir, fyrir utan alla valkostina sem skjárinn býður upp á, að skipta rúðum lárétt eða lóðrétt á milli margra glugga, breyta stærð gluggarúða, fylgjast með lotuvirkni, forskriftagerð með skipanalínustillingu o.s.frv. allar Unix dreifingar og jafnvel það hefur verið innifalið í grunnkerfi OpenBSD.

Eftir að hafa gert ssh á ytri gestgjafanum og slegið inn tmux, muntu fara í nýja lotu með nýjum glugga sem opnast fyrir framan þig, þar sem þú getur gert hvað sem þú gerir á venjulegri flugstöð.

$ tmux

Eftir að hafa framkvæmt aðgerðir þínar á flugstöðinni geturðu aftengt þá lotu frá stjórnstöðinni þannig að hún fari í bakgrunn og þú getur örugglega skráð þig út.

Annaðhvort geturðu keyrt \tmux detach þegar þú keyrir tmux lotu eða þú getur notað flýtileiðina (Ctrl+b svo d). Eftir þetta verður núverandi lota aftengd og þú kemur aftur í flugstöðina þína þaðan sem þú getur skráð þig út á öruggan hátt.

$ tmux detach

Til að opna aftur lotuna sem þú aftengdir og skildir eftir eins og hún er þegar þú skráðir þig út af kerfinu skaltu bara skrá þig inn á ytri vélina aftur og sláðu inn \tmux attach til að tengja aftur við lokuðu lotuna og hún verður enn til staðar og hlaupandi.

$ tmux attach

Til að læra meira um tmux og hvernig á að nota það skaltu bara fylgja hlekknum: Notaðu Tmux Terminal Multiplexer til að stjórna mörgum Linux útstöðvum.

Ef þú ert ekki svo kunnugur skjá eða tmux geturðu notað nohup og sent langvarandi skipunina þína í bakgrunninn svo þú getir haldið áfram á meðan skipunin heldur áfram að keyra í bakgrunni. Eftir það geturðu örugglega skráð þig út.

Með nohup skipuninni segjum við ferlinu að hunsa SIGHUP merkið sem er sent með ssh lotu við lokun, þannig að skipunin haldist áfram jafnvel eftir útskráningu á lotunni. Við útskráningu úr lotunni er skipunin fjarlægð frá stjórnstöðinni og heldur áfram að keyra í bakgrunni sem púkaferli.

Hér er einföld atburðarás þar sem við höfum keyrt finna skipun til að leita að skrám í bakgrunni á ssh lotu með því að nota nohup, eftir það var verkefnið sent í bakgrunninn með hvetjandi skila strax með PID og verkauðkenni ferlisins ([ JOBID] PID).

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

Þegar þú skráir þig aftur inn geturðu athugað stöðu skipunarinnar, komið henni aftur í forgrunn með því að nota fg %JOBID til að fylgjast með framvindu hennar og svo framvegis. Hér að neðan sýnir úttakið að verkinu var lokið þar sem það birtist ekki við endurinnskráningu og hefur gefið úttakið sem birtist.

# fg %JOBID

Önnur glæsileg leið til að láta skipunina þína eða eitt verkefni keyra í bakgrunni og halda lífi, jafnvel eftir að þú hefur skráð þig út eða aftengd er með því að nota disown.

Afneitun, fjarlægir starfið af vinnslulista kerfisins, þannig að ferlið er varið frá því að drepast meðan á lotuaftengingu stendur þar sem það mun ekki fá SIGHUP af skelinni þegar þú skráir þig út.

Ókostur þessarar aðferðar er að hún ætti aðeins að vera notuð fyrir þau störf sem þurfa ekki inntak frá stdininu og hvorugt þarf að skrifa í stdout, nema þú beinir sérstaklega inn- og úttak verka, því þegar starf mun reyna að hafa samskipti við stdin eða stdout, það mun stoppa.

Hér að neðan sendum við ping skipun í bakgrunninn svo að ut haldi áfram að keyra og verði fjarlægt af verkefnalistanum. Eins og sést var starfinu fyrst hætt, eftir það var það enn á vinnulistanum sem ferli ID: 15368.

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

Eftir það afneitunarmerki var sent til starfsins og það var fjarlægt af vinnulistanum, þó að það væri enn í gangi í bakgrunni. Starfið væri enn í gangi þegar þú skráir þig aftur inn á ytri netþjóninn eins og sést hér að neðan.

$ ps -ef | grep ping

Annað tól til að ná fram nauðsynlegri hegðun er setsid. Nohup hefur ókosti í þeim skilningi að vinnsluhópur ferlisins er sá sami þannig að ferlið sem keyrir með nohup er viðkvæmt fyrir hvaða merki sem er sent til alls ferlishópsins (eins og Ctrl + C).

setsid úthlutar aftur á móti nýjum vinnsluhópi í ferlið sem verið er að keyra og þess vegna er ferlið sem búið er til algerlega í nýúthlutaðum ferlihópi og getur keyrt á öruggan hátt án þess að óttast að verða drepinn jafnvel eftir útskráningu á lotunni.

Hér sýnir það að ferlið ‘svefn 10m’ hefur verið aðskilið frá stjórnstöðinni frá þeim tíma sem það var búið til.

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

Nú, þegar þú myndir skrá þig aftur inn á fundinn muntu samt finna þetta ferli í gangi.

$ ps -ef | grep [s]leep

Niðurstaða

Hvaða leiðir gætirðu hugsað þér til að halda ferlinu þínu í gangi jafnvel eftir að þú skráir þig úr SSH fundi? Ef það er einhver önnur og skilvirk leið sem þér dettur í hug skaltu nefna það í athugasemdum þínum.