Uzakdan SSH sessiýalaryny we kesilmeginden soň işlemegiň 5 usuly


SSH ýa-da Howpsuz Shell, ýönekeý sözler bilen aýdylanda, başga bir ulgamda başga bir ulanyja uzakdan girip bilýän, ýöne diňe buýruk setirinde, ýagny GUI däl re inimde. Has tehniki nukdaýnazardan seredenimizde, başga bir ulgamdaky beýleki ulanyja ýüz tutanymyzda we şol enjamda buýruklary işledenimizde, hakykatdanam pseudo terminaly döredýär we giren ulanyjynyň giriş gabygyna birikdirilýär.

Birnäçe wagt işsiz bolanymyzdan sessiýadan ýa-da sessiýa wagtyndan çykanymyzda, SIGHUP signaly pseudo terminalyna we şol terminalda işleýän ähli işlere, hatda ene-atasy bolan işlere iberilýär. pseudo terminalynda başlamak SIGHUP signalyny hem iberýärler we ýatyrmaga mejbur bolýarlar.

Diňe bu duýduryşy äsgermezlik etmek üçin düzülen işler, sessiýa gutarandan aman galanlardyr. Linux ulgamlarynda, bu işleriň uzakdaky serwerde ýa-da ulanyjylaryň sessiýasy we sessiýa bes edilenden soň hem işlemeginiň köp usullary bolup biler.

Linux-daky amallara düşüniň

Adaty prosesler, sessiýanyň ömri bar. Olar sessiýa üçin deslapky prosesler hökmünde başlanýar we belli bir wagtyň içinde ýa-da sessiýa çykanda gutarýar. Bu amallar, kök goşmak bilen ulgamyň islendik ulanyjysy ýaly öz eýesine eýe.

Petimler, başda bu prosesi döreden ene-atasy bolan, ýöne birneme wagt geçensoň, ene-atanyň prosesi bilgeşleýin öldi ýa-da ýykyldy, bu prosesiň ene-atasy boldy. Şeýle amallar ölýänçä ýa-da gutarýança garaşýan ýakyn ene-atasy hökmünde başlaýar.

Bular bilgeşleýin ýetim prosesler, ulgamda bilkastlaýyn galan şeýle proseslere daemon ýa-da bilkastlaýyn ýetimler diýilýär. Adatça, bir wagtlar başlanan we soňra islendik gözegçilik terminalyndan aýrylýan uzak möhletli prosesler bolup, olar gutarýança fonda işledip bilerler ýa-da ýalňyşlyk goýberip bilerler. Şeýle prosesleriň ene-atasy çagany fonda ýerine ýetirmek üçin bilkastlaýyn ölýär.

SSH sessiýasyny kesilenden soň işlemegiň usullary

Aşakda görkezilişi ýaly ssh sessiýalaryny kesilenden soň işlemegiň dürli ýollary bolup biler:

Ekran Linux üçin tekst penjire menejeri bolup, ulanyja bir wagtyň özünde birnäçe terminal sessiýasyny dolandyrmaga, sessiýalaryň arasynda geçmäge, ekranda işleýän sessiýalara sessiýa ýazmaga we hatda sessiýanyň ýazylmagyna alada bildirmän islän wagtymyzy dowam etdirmäge mümkinçilik berýär. ýa-da terminal ýapylýar.

Ekran sessiýalary başlap, soňra dolandyryş terminalyndan aýrylyp, olary fonda işledip, islendik wagt we hatda islendik ýerde dowam etdirip bolýar. Diňe sessiýaňyzy ekranda başlamaly we islän wagtyňyz ony pseudo terminalyndan (ýa-da dolandyryş terminaly) we çykyşdan aýyryň. Duýsaňyz, täzeden girip, sessiýany dowam etdirip bilersiňiz.

Ekran buýrugyny ýazanyňyzdan soň, siz täze ekran sessiýasyna girersiňiz, bu sessiýanyň içinde täze penjireler döredip, penjireleriň arasyndan geçip, ekrany gulplap we adaty terminalda edip boljak başga-da köp zatlary edip bilersiňiz.

$ screen

Ekran sessiýasy başlansoň, islendik buýrugy işledip we sessiýany bölüp sessiýany dowam etdirip bilersiňiz.

Diňe uzakdaky sessiýadan çykmak isleseňiz, ýöne şol enjamda döreden sessiýaňyzy dowam etdirmek isleseňiz, diňe etmeli zadyňyz, gözegçilik terminaly galmazlygy üçin ekrany terminaldan aýyrmak. Muny edeniňizden soň, arkaýyn çykyp bilersiňiz.

Uzakdaky terminaldan ekrany aýyrmak üçin diňe \Ctrl + a basyň we derrew \d basyň we şol habary görüp terminala dolanarsyňyz. Ekran aýry. Indi arkaýyn çykyp bilersiňiz we sessiýaňyz diri galar.

Çykmazdan ozal galdyran aýratyn ekran sessiýasyny dowam etdirmek isleseňiz, uzakdaky terminala täzeden giriň we diňe bir ekran açylan ýagdaýynda \screen -r ýazyň. birnäçe ekran sessiýasy açylýar \screen -r .

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

Ekranyň buýrugy we ony nädip ulanmalydygy barada has giňişleýin maglumat üçin baglanyşyga eýeriň: Linux Terminal sessiýalaryny dolandyrmak üçin ekran buýrugyny ulanyň

Tmux, ekrany çalyşmak üçin döredilen başga bir programma üpjünçiligi. Ekranyň mümkinçilikleriniň köpüsine, ekrandan has güýçli edýän goşmaça mümkinçilikleri az.

Ekranda hödürlenýän ähli opsiýalardan başga-da panelleri keseligine ýa-da dikligine birnäçe penjiräniň arasynda bölmäge, penjire panelleriniň ölçegini üýtgetmäge, sessiýa işjeňligine gözegçilik etmäge, buýruk setiri re usingimini ulanyp skript ýazmaga we ş.m. mümkinçilik berýär. ähli Unix paýlamalary we hatda OpenBSD-iň esasy ulgamyna girizildi.

Uzakdaky hostda ssh edeniňizden we tmux ýazanyňyzdan soň, adaty terminalda edip biljek zatlaryňyzy edip boljak täze penjire açyljak täze sessiýa girersiňiz.

$ tmux

Terminalda amallaryňyzy ýerine ýetireniňizden soň, şol sessiýany yzky fonda geçer we ygtybarly çykyp bilersiňiz.

Tma-da tmux sessiýasynda \tmux detach işledip bilersiňiz ýa-da (Ctrl + b soň d) salgylanmasyny ulanyp bilersiňiz. Ondan soň häzirki sessiýaňyz aýrylar we howpsuz çykyp boljak ýeriňizden terminalyňyza gaýdyp gelersiňiz.

$ tmux detach

Aýrylan we goýlan sessiýaňyzy ulgamdan çykanyňyz ýaly täzeden açmak üçin uzakdaky maşyna täzeden giriň we ýapyk sessiýa täzeden birikdirmek üçin\tmux attach ýazyň we ol henizem şol ýerde bolar we bolar ylgaýar.

$ tmux attach

Tmux we ony nädip ulanmalydygy barada has giňişleýin öwrenmek üçin diňe baglanyşyga eýeriň: Birnäçe Linux terminallaryny dolandyrmak üçin Tmux Terminal Multiplexer ulanyň.

Ekran ýa-da tmux bilen beýle tanyş däl bolsaňyz, nohup ulanyp, uzyn işleýän buýrugyňyzy fonda iberip bilersiňiz, buýruk fonda ýerine ýetirilmegini dowam etdirer. Ondan soň arkaýyn çykyp bilersiňiz.

Nohup buýrugy bilen, ssh sessiýasy bilen ýatyrylanda iberilýän SIGHUP signalyny äsgermezlik etmegi buýurýarys, şeýlelik bilen buýruk sessiýa çykandan soňam dowam edýär. Sessiýa çykanda buýruk terminaly dolandyrmakdan aýrylýar we daemon prosesi hökmünde fonda işlemegini dowam etdirýär.

Ynha, ýönekeý bir ssenariýa, biz nohup ulanyp ssh sessiýasynda fon faýllaryny gözlemek buýrugyny işledik, şondan soň derrew PID we işiň ID-sini bermek bilen derrew yzyna iberilýär. JOBID] PID) .

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

Againene-de täzeden gireniňizde, buýrugyň ýagdaýyny barlap bilersiňiz, gidişine gözegçilik etmek üçin fg% JOBID ulanyp, ony birinji orna çykaryp bilersiňiz. Aşakda çykyş, gaýtadan girişde görkezilmeýänligi sebäpli, işiň tamamlanandygyny we görkezilen çykyşy berendigini görkezýär.

# fg %JOBID

Buýrugyňyza ýa-da ýekeje meseläňiziň fonda işlemegine we sessiýa çykandan ýa-da kesilenden soňam diri galmagynyň başga bir ajaýyp usuly, ret etmekdir.

Işden ýüz öwüriň, ulgamy ulgamyň iş sanawyndan aýyryň, şonuň üçin sessiýa kesilende öldürilmekden goralýar, sebäbi hasabyňyza gireniňizde gabykdan SIGHUP almaz.

Bu usulyň ýetmezçiligi, diňe stdin-den giriş zerurlygy bolmadyk we stdout-a ýazmak zerurlygy bolmadyk işlerde ulanylmalydyr, eger iş girişini we çykyşyny ýörite ugrukdyrmasaňyz, sebäbi iş stdin bilen täsirleşjek bolanda ýa-da stdout durar.

Aşakda ping buýrugyny fona iberdik, şonuň üçin ut işlemegini dowam etdirer we iş sanawyndan aýrylar. Görnüşi ýaly, iş ilki bilen togtadyldy, şondan soňam iş sanawynda: Prosess ID: 15368.

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

Şondan soň ret etmek signaly işe geçirildi we henizem fonda işleýän hem bolsa iş sanawyndan aýryldy. Aşakdaky ýaly uzakdaky serwere täzeden gireniňizde iş henizem dowam eder.

$ ps -ef | grep ping

Gerekli özüni alyp barmak üçin başga bir peýdaly zat. “Nohup” -yň prosess topary şol bir bolmagynda kemçilik bar, şonuň üçin “nohup” bilen işleýän proses, ähli proses toparyna iberilen signallara ( Ctrl + C ýaly) goragsyz bolup biler.

beýleki tarapdan, ýerine ýetirilýän prosese täze bir topar topary bölýär we şonuň üçin döredilen proses düýbünden täze bölünen toparda bolup, sessiýa gutarandan soň hem öldürilmeginden gorkman howpsuz ýerine ýetirip biler.

Bu ýerde, 'uklamak 10m' amalynyň döredilen gününden bäri dolandyryş terminalyndan aýrylandygyny görkezýär.

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

Indi, sessiýa täzeden gireniňizde, bu amalyň dowam edýändigini görersiňiz.

$ ps -ef | grep [s]leep

Netije

SSH sessiýasyndan çykanyňyzdan soň hem amalyňyzy dowam etdirmek üçin haýsy ýollar hakda pikir edip bilersiňiz? Başga pikirlenip boljak we täsirli usul bar bolsa, teswirleriňizde belläň.