Почти каждый процесс в Linux имеет управляющий терминал. Но что вообще такое управляющий терминал? Давай выясним.
Возможно, вы слышали термин «управляющий терминал», используемый в отношении процессов Linux. Вы можете быть сбиты с толку тем, что такое управляющий терминал. К счастью, управляющий терминал прост для понимания.
Что такое управляющий терминал?
Управляющий терминал — это терминал, на котором запускается процесс Linux. Например, если вы запускаете команду из оболочки, окно терминала, в котором вы ввели команду, является управляющим терминалом.
Процессы, запущенные с управляющими терминалами, наследуют атрибуты родительского терминала. Это связано со способом запуска процессов в Linux. Когда вы запускаете команду, оболочка создает свою копию или «разветвляется», а затем заменяет себя программой, которую вы хотели запустить, или «execs».
Как увидеть, какие процессы имеют управляющий терминал
Легко увидеть процессы, у которых есть управляющий терминал в Linux. Вы можете использовать команда пс увидеть их.
Вы можете увидеть все процессы, принадлежащие всем пользователям в системе, независимо от того, есть ли у них управляющие терминалы, с помощью «дополнительно» аргумент:
ps вспомогательный
Поскольку это генерирует много вывода в системах Linux, может быть полезно передать его в пейджер, например, less:
PS вспомогательный | меньше
Вы также можете просмотреть первые несколько строк с помощью утилиты head:
PS вспомогательный | голова
В выводе вы увидите столбец с надписью «TTY». Это указывает на управляющий терминал процесса, если он есть. Процесс с управляющим терминалом будет отображать «ttyx», где «x» — номер терминала или «pts», за которым следует косая черта (/) и номер строки псевдотерминала.
Поскольку большинство терминалов на самом деле являются эмуляторами терминалов, они используют псевдотерминалы или PTY. «pts» указывает на эмулятор терминала, а не на физический терминал или виртуальная консоль.
Процессы без управления терминалами
В большинстве систем Linux в столбце TTY будет отображаться вопросительный знак (?) характер во многих процессах. Это связано с тем, что процесс не имеет управляющего терминала. Почему это происходит?
В системах Linux в фоновом режиме работает множество демонов или служб. Это могут быть серверы, такие как веб-сервер, а также демоны, которые выполняют множество основных задач, таких как управление сетевым подключением. Им не нужно использовать терминал, поэтому они просто работают без него.
Если вы запускаете графическое приложение из меню среды рабочего стола, у него также не будет управляющего терминала.
Терминальные мультиплексоры, такие как GNU Screen или tmux, позволяют вам отсоединить процесс. Если вы выйдете из системы, но оставите свою систему работающей, вы можете обнаружить, что этому процессу также не хватает управляющего терминала.
Если у вас есть процесс без управляющего терминала, от которого вы хотите избавиться, можно использовать утилиту kill.
Теперь вы знаете об управлении терминалами
Управляющий терминал — это терминал, с которого вы запустили команду. Легко увидеть, какие процессы имеют и не имеют управляющий терминал с помощью команды ps. И многие программы для Linux не работают либо потому, что они являются демонами, либо потому, что вы, возможно, отсоединили их с помощью терминального мультиплексора.
Мультиплексоры, такие как tmux, не только сохраняют локальные терминальные сеансы при входе в систему, но также являются мощными инструментами для удаленных SSH-соединений.