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