Skoraj vsak proces v Linuxu ima nadzorni terminal. Toda kaj sploh je nadzorni terminal? Pa ugotovimo.
Morda ste že slišali za izraz "kontrolni terminal", ki se uporablja v zvezi s procesi Linux. Morda ste zmedeni glede tega, kaj je kontrolni terminal. Na srečo je nadzorni terminal enostaven za razumevanje.
Kaj je nadzorni terminal?
Nadzorni terminal je terminal, kjer se začne proces Linuxa. Na primer, če zaženete ukaz iz lupine, je terminalsko okno, v katerega ste vnesli ukaz, nadzorni terminal.
Procesi, zagnani s krmilnimi terminali, podedujejo atribute nadrejenega terminala. To je posledica načina zagona procesov v Linuxu. Ko zaženete ukaz, lupina naredi kopijo samega sebe ali "razcepi", nato pa se nadomesti s programom, ki ste ga želeli zagnati, ali "execs".
Kako videti, kateri procesi imajo nadzorni terminal
Preprosto je videti procese, ki imajo nadzorni terminal v Linuxu. Lahko uporabiš ukaz ps da jih vidim.
Vse procese, ki pripadajo vsem uporabnikom v sistemu, ne glede na to, ali imajo nadzorne terminale ali ne, lahko vidite z uporabo “pomožno” prepir:
ps pom
Ker to generira veliko izhodnih podatkov v sistemih Linux, je lahko koristno, če ga napeljete v pozivnik, kot je manj:
ps aux | manj
Prvih nekaj vrstic si lahko ogledate tudi s pripomočkom za glavo:
ps aux | glavo
V izhodu boste videli stolpec z oznako »TTY«. To označuje krmilni terminal procesa, če obstaja. Proces s krmilnim terminalom bo prikazal »ttyx«, kjer je »x« številka terminala ali »pts«, ki ji sledita poševnica (/) in številka vrstice psevdoterminala.
Ker je večina terminalov dejansko terminalskih emulatorjev, uporabljajo psevdoterminale ali PTY. "Pts" označuje terminalski emulator in ne fizični terminal oz virtualna konzola.
Procesi brez krmiljenja terminalov
V večini sistemov Linux bo stolpec TTY prikazal a vprašaj (?) v številnih procesih. To je zato, ker proces nima nadzornega terminala. Zakaj se to zgodi?
Sistemi Linux v ozadju izvajajo veliko demonov ali storitev. To so lahko strežniki, kot je spletni strežnik, pa tudi demoni, ki opravljajo veliko osnovnih stvari, kot je izvajanje vaše omrežne povezave. Tem ni treba uporabljati terminala, zato delujejo preprosto brez njega.
Če zaženete grafično aplikacijo iz menija namiznega okolja, tudi ta ne bo imela krmilnega terminala.
Terminalski multiplekserji, kot sta GNU Screen ali tmux, vam omogočajo, da odklopite proces. Če se odjavite, vendar vaš sistem deluje, boste morda ugotovili, da temu procesu manjka tudi nadzorni terminal.
Če imate proces brez nadzornega terminala, ki se ga želite znebiti, lahko uporabite pripomoček kill.
Zdaj veste o upravljanju terminalov
Nadzorni terminal je terminal, s katerega ste zagnali ukaz. Z ukazom ps je enostavno videti, kateri procesi imajo in kateri nimajo krmilni terminal. Številni programi za Linux pa ne, bodisi zato, ker so demoni ali pa ste jih morda odklopili s terminalskim multiplekserjem.
Multiplekserji, kot je tmux, ne samo, da lokalne terminalske seje vztrajajo med prijavami, ampak so tudi zmogljiva orodja za oddaljene povezave SSH.