Prawie każdy proces w Linuksie ma kontrolujący terminal. Ale czym w ogóle jest terminal kontrolny? Dowiedzmy Się.
Być może słyszałeś termin „terminal kontrolny” używany w odniesieniu do procesów Linuksa. Możesz być zdezorientowany, czym jest terminal kontrolny. Na szczęście terminal sterujący jest łatwy do zrozumienia.
Co to jest terminal kontrolny?
Terminal kontrolny to terminal, w którym uruchamiany jest proces systemu Linux. Na przykład, jeśli uruchomisz polecenie z powłoki, okno terminala, w którym wpisałeś polecenie, jest terminalem sterującym.
Procesy uruchamiane z terminalami sterującymi dziedziczą atrybuty terminala nadrzędnego. Wynika to ze sposobu uruchamiania procesów w systemie Linux. Kiedy uruchamiasz polecenie, powłoka tworzy swoją kopię, czyli „rozwidla”, a następnie zastępuje się programem, który chciałeś uruchomić, czyli „execs”.
Jak zobaczyć, które procesy mają terminal sterujący
Łatwo jest zobaczyć procesy, które mają terminal kontrolny w systemie Linux. Możesz użyć polecenie ps zobaczyć ich.
Możesz zobaczyć wszystkie procesy należące do wszystkich użytkowników w systemie, niezależnie od tego, czy mają terminale kontrolne, używając „pomocniczy” argument:
ps pom
Ponieważ generuje to dużo danych wyjściowych w systemach Linux, pomocne może być potokowanie ich do pagera, na przykład less:
ps aux | mniej
Możesz także wyświetlić kilka pierwszych wierszy za pomocą narzędzia head:
ps aux | głowa
Na wyjściu zobaczysz kolumnę oznaczoną „TTY”. Wskazuje terminal sterujący procesu, jeśli taki istnieje. Proces z terminalem sterującym wyświetli „ttyx”, gdzie „x” to numer terminala lub „pts”, po którym następuje ukośnik (/) i numer linii pseudoterminala.
Ponieważ większość terminali to w rzeczywistości emulatory terminali, używają one pseudoterminali lub PTY. „pts” wskazuje raczej na emulator terminala niż na fizyczny terminal lub wirtualna konsola.
Procesy bez kontrolowania terminali
W większości systemów Linux kolumna TTY wyświetli a znak zapytania (?) charakter w wielu procesach. Dzieje się tak, ponieważ proces nie ma kontrolującego terminala. Dlaczego to się dzieje?
Systemy Linux uruchamiają w tle wiele demonów lub usług. Mogą to być serwery, takie jak serwer WWW, a także demony, które wykonują wiele podstawowych czynności, takich jak uruchamianie połączenia sieciowego. Nie muszą one korzystać z terminala, więc po prostu działają bez niego.
Jeśli uruchomisz aplikację graficzną z menu środowiska pulpitu, nie będzie ona również miała terminala sterującego.
Multipleksery terminali, takie jak GNU Screen lub tmux, umożliwiają odłączenie procesu. Jeśli wylogujesz się, ale utrzymasz system uruchomiony, może się okazać, że w tym procesie również brakuje kontrolującego terminala.
Jeśli masz proces bez kontrolującego terminala, którego chcesz się pozbyć, możesz użyć narzędzia do zabijania.
Teraz wiesz o kontrolowaniu terminali
Terminal sterujący to terminal, z którego uruchomiono polecenie. Łatwo jest zobaczyć, które procesy mają i nie mają kontrolującego terminala za pomocą polecenia ps. A wiele programów linuksowych tego nie robi, ponieważ są demonami lub mogłeś je odłączyć za pomocą multipleksera terminala.
Multipleksery, takie jak tmux, nie tylko utrzymują lokalne sesje terminalowe podczas logowania, ale są również potężnymi narzędziami do zdalnych połączeń SSH.