A Linuxban szinte minden folyamatnak van vezérlőterminálja. De mi is az a vezérlő terminál? Találjuk ki.
Talán hallotta már a „vezérlő terminál” kifejezést a Linux folyamatokkal kapcsolatban. Lehet, hogy megzavarod, mi az a vezérlő terminál. Szerencsére a vezérlő terminál könnyen érthető.
Mi az a vezérlőterminál?
A vezérlő terminál egy olyan terminál, ahol egy Linux folyamat elindul. Például, ha parancsot futtat a shellből, akkor az a terminálablak, amelybe a parancsot beírta, a vezérlő terminál lesz.
A vezérlő terminálokkal elindított folyamatok öröklik a szülőterminál attribútumait. Ez annak köszönhető, ahogyan a folyamatokat elindítják a Linuxban. Amikor futtat egy parancsot, a shell másolatot készít magáról, vagy „elágazódik”, majd lecseréli magát a futtatni kívánt programmal vagy „execs”-re.
Hogyan lehet megnézni, hogy mely folyamatoknak van vezérlőterminálja?
Könnyű látni azokat a folyamatokat, amelyeknek van vezérlő terminálja a Linuxban. Te tudod használni a ps parancsot látni őket.
A segítségével megtekintheti a rendszer összes felhasználójához tartozó összes folyamatot, függetlenül attól, hogy rendelkeznek-e vezérlő terminállal vagy sem "aux" érv:
ps aux
Mivel ez sok kimenetet generál Linux rendszereken, hasznos lehet, ha egy lapozóba vezeti be, például kevesebb:
ps aux | Kevésbé
Az első néhány sort a fej segédprogrammal is megtekintheti:
ps aux | fej
A kimenetben egy „TTY” feliratú oszlop jelenik meg. Ez a folyamat vezérlő terminálját jelzi, ha van ilyen. A vezérlő terminállal rendelkező folyamat a „ttyx” kifejezést jeleníti meg, ahol az „x” a terminál száma vagy „pts”, amelyet egy perjel (/) és a pszeudoterminál sorszáma követ.
Mivel a legtöbb terminál valójában terminálemulátor, pszeudoterminálokat vagy PTY-ket használnak. A "pts" terminálemulátort jelöl, nem pedig fizikai terminált vagy virtuális konzol.
Folyamatok terminálok vezérlése nélkül
A legtöbb Linux rendszeren a TTY oszlopban megjelenik a kérdőjel (?) karakter sok folyamatban. Ennek az az oka, hogy a folyamatnak nincs vezérlő terminálja. Miért történik ez?
A Linux rendszerek sok démont vagy szolgáltatást futtatnak a háttérben. Ezek lehetnek szerverek, például webszerverek, valamint olyan démonok, amelyek sok alapvető dolgot végeznek, például a hálózati kapcsolat futtatását. Ezekhez nincs szükség terminál használatára, így egyszerűen futnak anélkül.
Ha egy grafikus alkalmazást az asztali környezet menüjéből indít el, annak sem lesz vezérlőterminálja.
A terminál multiplexerek, például a GNU Screen vagy a tmux lehetővé teszik a folyamatok leválasztását. Ha kijelentkezik, de továbbra is fut a rendszer, előfordulhat, hogy a folyamatból hiányzik a vezérlő terminál.
Ha van egy vezérlő terminál nélküli folyamat, amelytől meg akar szabadulni, használhatja a kill segédprogramot.
Most már ismeri a terminálok vezérlését
A vezérlő terminál egy olyan terminál, amelyről parancsot indított. A ps paranccsal könnyen belátható, hogy mely folyamatoknak van és nincs vezérlő terminálja. És sok Linux-program nem, vagy azért, mert démonok, vagy esetleg terminálmultiplexerrel választotta le őket.
A tmux-hoz hasonló multiplexerek nemcsak a helyi terminál-munkamenetek fennmaradását teszik lehetővé a bejelentkezések között, hanem hatékony eszközök a távoli SSH-kapcsolatokhoz is.