![Cele mai bune modalități de a remedia tasta funcției de luminozitate care nu funcționează în Windows 11](/f/f890007d58362e2b55045a2d53707a7f.png?width=100&height=100)
SSH sau Secure Shell în termeni simpli este un mod prin care o persoană poate accesa de la distanță un alt utilizator pe alt sistem, dar numai în linia de comandă, adică în mod non-GUI. În termeni mai tehnici, când ne adresăm altui utilizator de pe un alt sistem și executăm comenzi în acest sens mașină, de fapt creează un pseudo-terminal și îl atașează la shell-ul de autentificare al utilizatorului înregistrat în.
Când ne deconectăm de la sesiune sau sesiunea expiră după ce ne-am oprit destul de mult timp, LUMEA semnalul este trimis către pseudo-terminal și toate joburile care au fost rulate pe acel terminal, chiar și joburile care au joburile părinte care sunt inițiate pe pseudo-terminal primesc, de asemenea, semnalul SIGHUP și sunt forțați să termine.
Nu ratați:5 practici utile pentru a menține serverul SSH în siguranță și protejat
Numai joburile care au fost configurate pentru a ignora acest semnal sunt cele care supraviețuiesc încheierii sesiunii. Pe sistemele Linux, putem avea multe modalități de a face aceste lucrări să ruleze pe serverul de la distanță sau pe orice computer chiar și după deconectarea utilizatorului și terminarea sesiunii.
Procesele normale sunt cele care au durata de viață a unei sesiuni. Acestea sunt pornite în timpul sesiunii ca procese de prim-plan și ajung într-un anumit interval de timp sau când sesiunea este deconectată. Aceste procese își au proprietarul ca oricare dintre utilizatorii valizi ai sistemului, inclusiv root.
Procesele orfane sunt cele care au avut inițial un părinte care a creat procesul, dar după o perioadă de timp, procesul părinte a murit sau s-a prăbușit neintenționat, făcând init să fie părintele acestui proces. Astfel de procese au inițiat ca părinte imediat, care așteaptă aceste procese până când mor sau ajung.
Acestea sunt unele procese orfane intenționate, astfel de procese care sunt lăsate în mod intenționat să ruleze pe sistem sunt denumite procese demon sau intenționate orfane. Sunt de obicei procese de lungă durată care sunt inițiate odată și apoi detașate de orice control terminal, astfel încât să poată rula în fundal până când nu vor fi finalizate sau vor ajunge să arunce o eroare. Părintele unor astfel de procese moare intenționat făcând copilul să execute în fundal.
Pot exista diferite modalități de a lăsa sesiunile ssh să ruleze după deconectare, așa cum este descris mai jos:
ecran este un Window Manager de text pentru Linux care permite utilizatorului să gestioneze mai multe sesiuni de terminal în același timp, comutând între sesiuni, înregistrarea sesiunii pentru rularea sesiunilor pe ecran și chiar reluarea sesiunii în orice moment dorim, fără a ne face griji că sesiunea este deconectată sau terminalul închis.
sesiunile de ecran pot fi pornite și apoi detașate de terminalul de control lăsându-le să ruleze în fundal și apoi să fie reluate oricând și chiar în orice loc. Trebuie doar să începeți sesiunea pe ecran și, atunci când doriți, să o desprindeți de pseudo-terminal (sau terminalul de control) și deconectați-vă. Când vă simțiți, puteți să vă conectați din nou și să reluați sesiunea.
După tastare 'ecran' comanda, veți fi într-o nouă sesiune de ecran, în cadrul acestei sesiuni puteți crea ferestre noi, puteți traversa ferestrele, puteți bloca ecranul și puteți face multe alte lucruri pe care le puteți face pe un terminal normal.
$ ecran.
Odată ce sesiunea de ecran a început, puteți rula orice comandă și puteți menține sesiunea rulând detașând sesiunea.
Tocmai când doriți să vă deconectați de la sesiunea la distanță, dar doriți să păstrați sesiunea pe care ați creat-o pe acel aparat viu, atunci ceea ce trebuie să faceți este să detașați ecranul de terminal, astfel încât să nu aibă terminal de control stânga. După ce faceți acest lucru, vă puteți deconecta în siguranță.
Pentru a detașa un ecran de la terminalul de la distanță, trebuie doar să apăsați „Ctrl + a”
urmat imediat de „D”
și veți reveni la terminal văzând mesajul că ecranul este detașat. Acum vă puteți deconecta în siguranță și sesiunea dvs. va rămâne în viață.
Dacă doriți să reluați o sesiune de ecran detașată pe care ați lăsat-o înainte de a vă deconecta, trebuie doar să vă conectați din nou la terminalul de la distanță și să tastați „Ecran -r”
în cazul în care se deschide un singur ecran și dacă sunt deschise mai multe sesiuni de ecran „Ecran -r
.
$ ecran -r. $ ecran -r
Pentru a afla mai multe despre comanda ecranului și despre cum să o utilizați, urmați linkul: Utilizați Comanda ecranului pentru a gestiona sesiunile de terminal Linux
Tmux este un alt software creat pentru a înlocui ecran. Are majoritatea capacităților de ecran, cu puține capabilități suplimentare care îl fac mai puternic decât ecranul.
Permite, în afară de toate opțiunile oferite de ecran, împărțirea panourilor pe orizontală sau verticală ferestre multiple, redimensionarea panourilor ferestrei, monitorizarea activității sesiunii, scripting folosind modul linie de comandă etc. Datorită acestor caracteristici ale tmux, sa bucurat de o adoptare largă de către aproape toate distribuțiile Unix și chiar a fost inclus în sistemul de bază al OpenBSD.
După ce ați făcut ssh pe gazda la distanță și ați tastat tmux, veți intra într-o nouă sesiune cu o fereastră nouă care se deschide în fața dvs., în care puteți face orice faceți pe un terminal normal.
$ tmux.
După efectuarea operațiunilor pe terminal, puteți detașa acea sesiune de terminalul de control, astfel încât să intre în fundal și să vă puteți deconecta în siguranță.
Fie poți fugi „Tmux detach”
la rularea sesiunii tmux sau puteți utiliza comanda rapidă (Ctrl + b apoi d)
. După aceasta, sesiunea dvs. curentă va fi detașată și veți reveni la terminalul dvs. de unde vă puteți deconecta în siguranță.
$ tmux detachează.
Pentru a redeschide sesiunea pe care ați detașat-o și ați părăsit-o așa cum ați ieșit din sistem, trebuie doar să vă conectați din nou la mașina de la distanță și tastați „Tmux attach” pentru a reatașa la sesiunea închisă și va fi în continuare acolo și rulează.
$ tmux attach.
Pentru a afla mai multe despre tmux și cum să îl utilizați, urmați linkul: Utilizați multiplexorul terminalului Tmux pentru a gestiona mai multe terminale Linux.
Dacă nu sunteți atât de familiarizați cu ecran sau tmux, poți să folosești nu și trimiteți comanda de lungă durată în fundal, astfel încât să puteți continua în timp ce comanda va continua să se execute în fundal. După aceea, vă puteți deconecta în siguranță.
Cu comanda nohup îi spunem procesului să ignore LUMEA semnal care este trimis de sesiunea ssh la terminare, făcând astfel comanda să persiste chiar și după deconectarea sesiunii. La deconectarea sesiunii, comanda este detrasă de controlul terminalului și continuă să ruleze în fundal ca proces de demon.
Iată un scenariu simplu în care am fugit comanda find pentru a căuta fișiere în fundal în sesiunea ssh folosind nohup, după care sarcina a fost trimisă în fundal cu returnarea promptă imediat PID și slujbă ID a procesului ([JOBID] PID)
.
# nohup find / -type f $ gt; files_in_system.out 2> 1 &
Când vă reconectați din nou, puteți verifica starea comenzii, readuceți-o în prim-plan folosind „fg% JOBID”
pentru a-i monitoriza progresul și așa mai departe. Mai jos, rezultatul arată că lucrarea a fost finalizată deoarece nu apare la re-autentificare și a dat ieșirea care este afișată.
# fg% JOBID.
Un alt mod elegant de a lăsa comanda sau o singură sarcină să ruleze în fundal și să rămână în viață chiar și după deconectarea sesiunii sau deconectarea este prin utilizarea renegare.
Renegare, elimină jobul din lista de joburi a procesului din sistem, astfel încât procesul este protejat de a fi ucis în timpul deconectării sesiunii, deoarece nu va primi LUMEA de coajă când vă deconectați.
Dezavantajul acestei metode este că ar trebui să fie utilizat numai pentru joburile care nu au nevoie de nicio intrare de la stdin și nici unul dintre ei nu trebuie să scrie stdout, cu excepția cazului în care redirecționați în mod specific lucrările de intrare și ieșire, deoarece atunci când lucrarea va încerca să interacționeze stdin sau stdout, se va opri.
Mai jos, am trimis ping comanda în fundal, astfel încât ut continuă să ruleze și să fie eliminat din lista de joburi. După cum s-a văzut, postul a fost mai întâi suspendat, după care a fost încă în lista de locuri de muncă ca ID proces: 15368.
$ ping tecmint.com> pingout & $ locuri de muncă -l. $ renegare -h% 1. $ ps -ef | grep ping.
După ce semnalul de respingere a fost trecut la job și a fost eliminat din lista de joburi, deși încă se desfășura în fundal. Lucrarea va rula în continuare când vă veți reconecta la serverul de la distanță, așa cum se vede mai jos.
$ ps -ef | grep ping.
Un alt utilitar pentru a atinge comportamentul necesar este setsid. Nu are un dezavantaj în sensul că grupul de proces al procesului rămâne același, astfel încât procesul care rulează cu nohup este vulnerabil la orice semnal trimis întregului grup de proces (cum ar fi Ctrl + C
).
setsid pe de altă parte, alocă un nou grup de proces procesului executat și, prin urmare, procesul creat este complet într-un grup de proces nou alocat și poate executa în siguranță fără teama de a fi ucis chiar și după sesiune deconectare.
Aici, arată că procesul „Dorm 10m”
a fost detașat de terminalul de control, de când a fost creat.
$ setsid dorm 10m. $ ps -ef | grep somn.
Acum, când v-ați conecta din nou la sesiune, veți găsi în continuare acest proces în desfășurare.
$ ps -ef | grep [s] leep.
Ce modalități te-ai putea gândi pentru a-ți menține procesul în desfășurare chiar și după ce te deconectezi de la sesiunea SSH? Dacă există vreun alt mod eficient și la care vă puteți gândi, menționați în comentariile dvs.