Как закрыть терминал в linux

Обновлено: 05.07.2024

Иногда нужно «отвязать» программа от окна терминала, в котором она запущена. Например, вы подключились к удалённому серверу по SSH, запустили задачу, которая не является демоном, но выполнение которой требует большого времени (может быть дни и месяцы). Если вы закроете терминал или просто оборвёте SSH сессию, то запущенная программа попросту прекратит свою работу.

Ещё один пример ситуации, когда это может понадобиться, вы работаете с безголовым сервером (без графического окружения рабочего стола) и по этой причине не можете открыть несколько терминальных окон. Поэтому вы хотите перевести программу в фон, чтобы продолжить работу с терминалом.

В этой статье описаны варианты, как закрыть терминал без остановки запущенной в нём программы.

Для этого есть два решения:

Давайте разберёмся, а в чём различия между

Давайте для начала взглянем, что происходит, когда команда запускается из интерактивной оболочки (подключённой к терминалу) без & (и без какого либо перенаправления). Поэтому давайте предположим, что вы напечатали просто foo (в качестве примера команды), тогда:

  • Создаётся процесс foo.
  • Процесс наследует stdin (стандартный ввод), stdout (стандартный вывод), и stderr (стандартный вывод ошибок) из оболочки. Следовательно, он также подключён к тому же терминалу.
  • Если оболочка получает SIGHUP (сигнал, посылаемый процессу для уведомления о потере соединения с управляющим терминалом пользователя), она также отправляет SIGHUP процессу (что обычно приводит к завершению процесса).
  • В противном случае оболочка ожидает (является заблокированной) пока процесс завершиться.

Теперь давайте посмотрим, что происходит, когда мы переводим процесс в фон, это делается набором foo &:

  • Создаётся запущенный процесс foo.
  • Процесс наследует stdout/stderr из оболочки (поэтому он всё ещё пишет в терминал).
  • Процесс, в принципе, также наследует stdin, но как только он пытается читать из stdin, он приостанавливается.
  • Он помещается в список фоновых задач, которыми управляет оболочка, что в частности означает:

  • Он выводиться по jobs и к нему можно получить доступ используя %n (где n – это номер задачи).
  • Его можно перевести на задачу переднего плана, используя fg, в этом случае он продолжится, будто бы вы не использовали с ним & (и если раньше он останавливался, при попытке читать стандартный ввод, теперь он может работать с чтением стандартного ввода из терминала).
  • Если оболочка получает SIGHUP, она также отправляет SIGHUP процессу. В зависимости от оболочки и возможных включённых опций оболочки при завершении оболочки она также будет отправлять процессу SIGHUP.

Теперь disown удаляет задачу из списка задач оболочки, следовательно все приведённые выше подпункты больше не применяются (включая отправку оболочкой процессу сигнала SIGHUPl). Тем не менее, помните, что он всё ещё подключён к терминалу, поэтому если терминал разрушен (что может случиться если это был pty, как те, которые создаются xtermor или ssh, и контролирующая программа завершена закрытием xterm или закрытием SSH-подключения), программа потерпит неудачу, как только она попытается прочитать из стандартного ввода или записать в стандартный вывод.

Что делает nohup, с одной стороны, она активно отделяет процесс от терминала:

Помните, что nohup не удаляет процесс из контроля задач оболочки и также не переводит его в фон (но поскольку задача nohup на переднем плане практически бесполезно, то обычно она запускается с использованием &). Например, в отличие от disown, оболочка всё ещё будет говорит вам, когда задача nohup завершена (конечно, если оболочка не закрылась раньше этого).

  • & переводит задачу в фон, это приводит к блокировке попыток читать стандартный ввод и делает так, что оболочка не ждёт завершения задачи.
  • disown удаляет процесс из контроля задач оболочки, но всё ещё оставляет её связанной с терминалом. Одним из результатов этого является то, что оболочка не отправит SIGHUP. Очевидно, что это может быть применимо только к фоновым задачам, поскольку вы не можете ввести это когда запущена работа на переднем плане.
  • nohup отсоединяет процесс от терминала, перенаправляет его вывод в nohup.out и предохраняет его от SIGHUP. Одним из эффектов (в честь которого и названа команда) является то, что процесс не получит любой отправленный NOHUP. Он абсолютно независим от контроля задач и может, в принципе, использоваться для задач на переднем плане (хотя это не особо полезно).

Если использовать вместе все три disown, nohup и &, то процесс будет запущен в фоне, удалён из контроля задач оболочки и эффективно отключён от терминала.

nohup выполняет КОМАНДУ игнорируя сигналы обрыва терминальной линии.

Возможные опции nohup:

Если стандартный ввод является терминалом, то он берётся из нечитаемого файла.

Если стандартный вывод является терминалом, то вывод добавляется в «nohup.out», если возможно, иначе в «$HOME/nohup.out».

Если стандартный поток ошибок является терминалом, то он перенаправляет в стандартный вывод. Чтобы записать вывод в ФАЙЛ, используйте «nohup КОМАНДА > ФАЙЛ».

ЗАМЕЧАНИЕ: ваша оболочка может предоставлять свою версию nohup, которая обычно перекрывает версию, описанную здесь. Пожалуйста, обращайтесь к документации по вашей оболочке, чтобы узнать, какие ключи она поддерживает.

terminal

Итак сегодня я начинаю серию статей об терминале linux.

В этой статье мы посмотрим

  • Что такое терминал
  • Как открыть терминал
  • Включение/выключение компьютера из терминала.
  • Управление пользователями

В этих заметках я не буду подробно останавливаться на каждой команде, так как в каждой команде есть свои атрибуты и нужно будет писать целую книгу об терминале(таких есть достаточно), поэтому если Вы хотите узнать подробнее что делает каждая команда, то можно просто набрать команду и добавить атрибут например

Если Вы перешли на unix систему то просто обязаны знать основные команды в терминала. Для пользователей windows это будет чуть необычно, но я постараюсь объяснить все подробно.

Что такое терминал

Как открыть терминал

terminal

Чтобы закрыть терминал можно набрать в прямо в этом окне

Самая первая команда при запуске системы

При запуске системы. я всегда проверяю обновление системы, рекомендую и вам также поступать, для этого наберите в терминале

Включение-выключение компьютера из терминала

Итак чтобы перезагрузить компьютер через терминал, достаточно набрать команду

Чтобы выключить компьютер набираем

А если Вы хотите выключить компьютер через некоторое время, то эта команда для вас

Далее у нас идет управление пользователями
Включить корневую учетную запись:

Заблокировать корневую учетную запись:

Чтобы добавить нового пользователя:

Ну и естественно удалить пользователя:

Удалить пользователя вместе с его домашним каталогом:

Изменить имя пользователя и название его домашнего каталога:

Изменить пароль пользователя:

Восстановить пароль к учетной записи в режиме восстановления системы (нажать Esc в процессе загрузки GRUB):

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Cписок горячих клавиш в терминале Linux

Запуск терминала в Ubuntu непосредственно на рабочем столе также возможен по комбинациям клавиш.

  • Ctrl+Alt+T — запускает окно терминала на активном рабочем столе.
  • Alt+F2 — откроется окно «Выполнить», где достаточно вписать «lxterminal» и подтвердить кнопкой Ok.
  • Ctrl+Alt+(F1-F6) — откроется системная консоль (можно запустить до шести консолей одновременно), графическим аналогом которой и является терминал. Хотя эти комбинации относятся к системным, а не к терминалу, но с их помощью также можно получить доступ к режиму ввода команд.
  • Ctrl+Alt+F7 — возврат из консоли на рабочий стол.
  • Win+T — вызов терминала в Linux Ubuntu с рабочим окружением XFCE.

Управление окнами и вкладками

Нередко встречаются ситуации, когда нужно использовать несколько окон терминала. Это неудобно, поэтому в терминале предусмотрена возможность работать с различными вкладками в одном окне.

Управление отображением

С помощью представленных ниже комбинаций можно управлять информацией, отображаемой в окне терминала.

  • Ctrl+L — полностью очищает экран от записей. Вместо сочетания клавиш можно использовать команду «clear».
  • Ctrl+S — остановка вывода в Bash. Актуально во время запуска команд, отображающих огромное количество выходных данных. Команда продолжит выполняться, но вывод результатов ее работы отображаться не будет.
  • Ctrl+Q — вернуть вывод данных, если он был остановлен с использованием Ctrl+S.

Управление курсором

Хотя перемещать курсор в нужную позицию можно стрелочками на клавиатуре, следующие сокращения позволят установить его в нужную позицию. Это позволит быстрее и удобнее вводить команды.

  • Ctrl+A(Home) — быстрый переход в начало строчки.
  • Ctrl+E(End) — быстрый переход в конец строчки.
  • Alt+B — перемещение курсора влево на одно слово (назад).
  • Ctrl+B — перемещение на символ влево (назад).
  • Alt+F — перемещение на слово вперед.
  • Ctrl+F — перемещение на символ вперед.
  • Ctrl+XX — быстрое перемещение на начало строчки и возврат на прошлую позицию. Это сочетание клавиш используется, когда необходимо изменить что-то в начале строки и этой же комбинацией перейти на исходное место курсора.

Удаление текста и исправление опечаток

Исправлять опечатки или удалять ненужные символы можно такими комбинациями:

Работа с буфером обмена

В Bash также можно работать с буфером обмена, вырезая и вставляя текст.

  • Ctrl+W — вырезать слово перед курсором (и скопировать в буфер обмена).
  • Ctrl+K — вырезать строку, набранную после курсора.
  • Ctrl+U — вырезать строку перед курсором.
  • Ctrl+Y — вставить последний текст, добавленный в буфер обмена.
  • Shift+Insert — вставить текст из буфера обмена в строку терминала.

Операции форматирования

В Bash с помощью горячих клавиш (hotkeys) можно быстро изменять регистр символов, что подходит для исправления «правильных» опечаток.

  • Alt+U — все символы, начиная от курсора до конца слова будет преобразован в верхний регистр.
  • Alt+L — все символы, начиная от курсора до конца слова, преобразовывается в нижний регистр.
  • Alt+C — расположенный под курсором символ преобразовывается в верхний регистр, причем курсор переместится в конец слова.

Функция автодополнения с клавишей Tab

Данная функция относится к одной из наиболее полезных в терминале. Во время ввода имени файла, каталога или команды достаточно нажать Tab, после чего ввод должен автоматически завершиться. Если таковой возможности нет, в окне терминала будут отображены всевозможные способы дополнения, позволяя пользователю дальше печатать и нажимать Tab для завершения ввода.

Tab — автоматическое завершение набора имени файла, директории или команды.

Управление историей введенных команд

Чтобы избежать частых переписываний одинаковых команд, вспомнить ранее введенную и забытую и выполнить другие операции, можно посмотреть их историю. Она хранится в файле по пути «

/.bash_history», который можно открыть через любой текстовый редактор и просто ознакомиться с ней наглядно.

  • Ctrl+P(Стрелка вверх) — показывает предыдущую выполненную команду из сохраненной истории Bash. Нажимать можно не один раз, до момента пока не будет найдена нужная.
  • Ctrl+N(Стрелка вниз) — нажатие клавиш отобразит следующую команду из истории. Также можно нажимать неограниченное количество раз.
  • Alt+R — если команда была найдена через историю, а затем отредактирована, данное сочетание клавиш отменит эту правку.

В терминале также доступна функция поиска ранее запущенных команд.

  • Ctrl+R — открывает режим поиска команд. Достаточно удержать эту комбинацию и начать набирать команду, что позволит найти ее в истории.
  • Ctrl+O — выполнение найденной с использованием Ctrl+R команды.
  • Ctrl+G — завершить работу с режимом поиска по истории, не выполняя команду.

Контроль над процессами

Чтобы управлять процессами в терминале, используется следующий список горячих клавиш:

Команды Linux

Терминал и текстовые команды — главный способ управления операционной системой Linux. Особенно, если речь идет о сервере – на него редко ставят графический интерфейс, и вся работа выполняется исключительно через командную строку. Поэтому любому администратору важно знать хотя бы с десяток ключевых команд для терминала Линукс, нужных для навигации в системе и базового управления файлами. В этом материале мы их как раз разберем.

Базовые команды для работы с терминалом

То, что поможет при работе с консолью в целом.

  • clear — очищает всю выведенную в консоль информацию. Пригодится на тот случай, если терминал будет забит выводом других команд или содержимом ранее открытых документов. Помогает «начать с чистого листа».
  • history — отображает ранее введенные команды. По умолчанию показывает 10 последних, но при желании это значение можно изменить, добавив в качестве параметра любое число. Например, history 17, чтобы показать 17 последних выполненных операций.
  • whatis — вкратце описывает любую установленную программу. Вводим whatis и скармливаем ей в качестве аргумента название интересующей утилиты. Чтобы узнать, что такое wget, напишем whatis wget и получим краткую справку одной строкой.
  • man — демонстрирует подробное руководство по выбранной программе или команде. Чтобы выяснить, как работает wget и какие опции для него доступны, введем man wget. Получим массивное полотно со всей документацией для выбранной утилиты. P.S. Выйти из нее можно нажав на клавишу Q.

Команда Linux для вывода документации в терминал

Команды для управления правами на файлы и директории

Все, что нужно для разрешения проблем, связанных с правами в Linux.

  • sudo — выдает права суперпользователя. Используется перед любой другой командой в терминале, если нужно выполнить ее от имени администратора. Многие программы и операции запускаются исключительно при наличии этих прав, так что sudo используется часто. Например, чтобы обновить список пакетов в Ubuntu, введем: sudo apt-get update. При этом система запросит пароль администратора.
  • sudo su — переводит терминал в режим суперпользователя. В нем каждая введенная команда будет восприниматься системой так, будто перед ней ввели sudo. Помогает запускать несколько скриптов и утилит, требующих права администратора, без необходимости постоянно корректировать их или вводить пароль от учетной записи.
  • sudo gksudo — используется для запуска графических утилит от имени администратора. В Windows для этого есть специальная кнопка в контекстном меню, а в Linux — префикс. Синтаксис такой:

Команды для управления пользователями

Linux — многопользовательская система. Ей одновременно могут управлять несколько людей. Поэтому здесь достаточно сложная система добавления и редактирования учетных записей.

  • useradd — создает новую учетную запись. Например, мы хотим добавить пользователя с именем Timeweb. Для этого вводим: useradd Timeweb. Но свежесозданному аккаунту нужен не только логин, но и пароль. С помощью опций можно задать дополнительные характеристики новому пользователю.
  • passwd — задает пароль для учетной записи, работает вкупе с предыдущей командой. То есть сразу после создания аккаунта, пишем: passwd Timeweb (в вашем случае может быть любой другой пользователь). После этого система попросит придумать и указать пароль для новой учетной записи. По ходу набора пароля в терминале не будут отображаться даже звездочки, но он все равно учитывает каждую нажатую клавишу. Продолжайте набирать пароль вслепую.
  • userdel — удаляет выбранную учетную запись. Синтаксис простейший:

Установка, удаление и обновление пакетов

Для установки программ в Linux используются менеджеры пакетов. Они разнятся от дистрибутива к дистрибутиву, поэтому команды для управления ими тоже отличаются. Рассмотрим наиболее популярные.

Debian/Ubuntu

  • sudo apt-get install название пакета — устанавливает программу на выбор. Главное знать, как она называется.
  • sudo apt remove название пакета — стирает с жесткого диска имеющийся в системе пакет.
  • sudo apt-get update — обновляет информацию о пакетах, имеющихся в системе, и тех, что хранятся в подключенных репозиториях.
  • sudo apt-upgrade — обновляет установленные пакеты до самых свежих версий, доступных в подключенных репозиториях.

Red Hat Linux/CentOS

  • sudo dnf install название пакета — устанавливает программу на выбор.
  • sudo dnf upgrade — обновляет установленные пакеты до самых свежих версий.
  • sudo dnf remove название пакета — стирает с жесткого диска имеющийся в системе пакет.

Команды для навигации и базовой работы с файлами

Самый крупный список в статье. Содержит в себе практически все мелкие утилиты и инструменты для взаимодействия с файлами и папками. Причем речь идет не только об их изменении, но и о получении информации о них.

Запрос данных о файле

  • ls — покажет содержимое директории, в которой вы находитесь. Если после команды ввести адрес конкретной папки, то она покажет то, что хранится в ней. При добавлении аргумента -R в выводе команды появятся файлы из поддиректорий.
  • cd — change directory, что в переводе означает «сменить директорию». Из названия понятно, что с помощью этой команды можно перемещаться между папками. Вписываем ее, а потом адрес: cd /user/test/dir/111. Есть сокращенные варианты: cd- для перемещения в предыдущую директорию или cd (без аргументов) для прыжка в домашнюю папку.
  • pwd — укажет полный путь до директории, в которой вы находитесь. Если вы перепрыгнули на рабочий стол с помощью cd, то pwd покажет что-то в духе /home/Polzovatel/Desktop.
  • file — расскажет, что перед вами изображение, директория или текстовый документ, а также предоставит информацию о них (для изображений, например, это данные EXIF).
  • mv — mv применяется для перемещения файлов из одной папки в другую. Перенесем файл timeweb.txt из домашней директории на рабочий стол: mv timeweb.txt /home/имя учетной записи/Desktop. Эту же команду используют, чтобы поменять имя файла. Для этого надо не указывать папку для перемещения, а просто ввести новое название для документа:
  • cp — используем, если нужно не переместить файл, а создать его копию в другой директории. Работает так же, как и mv. Указываем путь до файла, который нужно скопировать, и путь до директории, куда копируем:

Команда Linux для загрузки файлов

Процесс работы команды Linux для загрузки файлов

  • zip — упаковывает файлы в архив в формате .zip. Синтаксис для создания zip-архива такой: zip название архива.zip путь до файла, который надо упаковать. К примеру:
  • unzip — напрямую связан с zip, но выполняет противоположную функцию. Извлекает файлы из архива. Работает по тому же принципу – вводим команду, а потом путь до архива, который надо распаковать.
  • find — продвинутая команда по поиску объектов в файловой системе Linux. Можно искать элементы как по названию, так и по иным характеристикам. Например, указать тип файла: find -type d -name Timeweb. Такая команда покажет все директории с именем Timeweb.
  • grep — find ищет файлы и директории, а grep ищет текст в их содержимом. Как вариант, можно отыскать слово «тест» в документе «test.txt». Для этого введем следующую команду: cat test.txt | grep тест. cat перед grep необходим, чтобы вывести найденную информацию в консоль. В противном случае grep найдет искомый контент, но не покажет его.

Содержимое текстового файла

Вот, что написано в тестовом документе

Команда Linux для вывода текста в консоль

Что в терминал выводит cat

Команда Linux для фильтрации текста

И что выводит grep

  • diff — сокращение от слово difference. Показывает разницу между двумя текстовыми файлами. Для сравнения используется такой синтаксис: diff название первого файланазвание второго файла. К примеру, diff text-1.txt text-2.txt
  • mount — монтирует образ или раздел диска. Для использования нужно лишь указать путь к разделу или образу, который нужно смонтировать.
  • unmount — выполняет противоположную задачу.

Команды для отображения базовой информации и управления системой

Утилиты, делящиеся разного рода справочной информацией с администратором компьютера.

Команда Linux для отображения состояния ЖД

  • df — показывает, сколько пространства занято на подключенных дисках и разделах. По умолчанию отображает данные в килобайтах. Можно переключиться на мегабайт, добавив параметр -m. Это выглядит так: df -m.
  • du — расскажет, сколько места занимает конкретный файл или папка. Чтобы узнать, насколько тяжелая директория Desktop, введем: du

На этом все. Это список команд, которыми я хотел бы поделиться с новичками. Я разобрал основное, что будет важно в самом начале работы. Ну а вы всегда можете воспользоваться документацией, открывающейся через man, и подробнее ознакомиться с любой из команд или утилит.

Читайте также: