Aproape fiecare proces din Linux are un terminal de control. Dar ce este chiar un terminal de control? Să aflăm.
Este posibil să fi auzit termenul „terminal de control” folosit în legătură cu procesele Linux. S-ar putea să fii confuz cu privire la ce este un terminal de control. Din fericire, un terminal de control este ușor de înțeles.
Ce este un terminal de control?
Un terminal de control este un terminal în care începe un proces Linux. De exemplu, dacă rulați o comandă din shell, fereastra terminalului în care ați introdus comanda este terminalul de control.
Procesele lansate cu terminale de control moștenesc atributele terminalului părinte. Acest lucru se datorează modului în care procesele sunt lansate în Linux. Când rulați o comandă, shell-ul face o copie a lui însuși, sau „furcă”, apoi se înlocuiește cu programul pe care ați vrut să îl rulați sau „execuți”.
Cum să vedeți ce procese au un terminal de control
Este ușor să vezi procese care au un terminal de control în Linux. Poți să folosești comanda ps sa ii vedem.
Puteți vedea toate procesele aparținând tuturor utilizatorilor din sistem, indiferent dacă au sau nu terminale de control, folosind „aux” argument:
ps aux
Deoarece acest lucru generează o mulțime de ieșiri pe sistemele Linux, poate fi util să-l introduci într-un pager, cum ar fi mai puțin:
ps aux | Mai puțin
De asemenea, puteți vizualiza primele câteva rânduri folosind utilitarul head:
ps aux | cap
În rezultat, veți vedea o coloană etichetată „TTY”. Aceasta indică terminalul de control al unui proces, dacă există unul. Un proces cu un terminal de control va afișa „ttyx” unde „x” este numărul terminalului sau „pts”, urmat de o bară oblică (/) și numărul liniei pseudoterminalului.
Deoarece majoritatea terminalelor sunt de fapt emulatori de terminale, ele folosesc pseudoterminale sau PTY-uri. „pts” indică mai degrabă un emulator de terminal decât un terminal fizic sau consola virtuală.
Procese fără terminale de control
Pe majoritatea sistemelor Linux, coloana TTY va afișa a semnul întrebării (?) caracter în multe procese. Acest lucru se datorează faptului că procesul nu are un terminal de control. De ce se întâmplă asta?
Sistemele Linux rulează o mulțime de demoni sau servicii în fundal. Acestea pot fi servere, cum ar fi un server web, precum și demoni care fac o mulțime de lucruri de bază, cum ar fi rularea conexiunii la rețea. Acestea nu trebuie să folosească un terminal, așa că pur și simplu rulează fără unul.
Dacă lansați o aplicație grafică din meniul unui mediu desktop, nici aceasta nu va avea un terminal de control.
Multiplexoarele terminale precum GNU Screen sau tmux vă permit să detașați un proces. Dacă vă deconectați, dar vă mențineți sistemul în funcțiune, este posibil să descoperiți că acel proces nu are și un terminal de control.
Dacă aveți un proces fără un terminal de control de care doriți să scăpați, puteți folosi utilitarul kill.
Acum știți despre controlul terminalelor
Un terminal de control este un terminal de la care ați lansat o comandă. Este ușor să vezi ce procese au și care nu au un terminal de control cu comanda ps. Și multe programe Linux nu, fie pentru că sunt demoni, fie pentru că este posibil să le fi detașat cu un multiplexor de terminal.
Multiplexoarele precum tmux nu numai că fac ca sesiunile de terminale locale să persistă între conectări, dar sunt și instrumente puternice pentru conexiunile SSH la distanță.