Linux who command

Примеры использования who

Используя опцию -a, мы получаем максимум данных, которыми команда готова снабдить нас без каких-либо дополнительных указаний. В состав этой опции входят опции -b, -d, —login, -p, -r, -t, -T, -u:

Этих данных больше, чем при простом использовании who:

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

Нужно узнать текущий уровень запуска (runinit)? Для этого служит команда who в сочетании с опцией -r:

При использовании опции -s выводятся значения NAME, LINE и TIME — информация, идентичная той, что будет получена без использования каких-либо опций. Все то же самое, но уже с добавлением данных о состоянии терминальной сессии, показывает опция -T.

Состояние — это возможность принимать сообщения от других терминалов. Если рядом с названием терминальной линии стоит «+», как на скриншоте, значит, сообщения могут быть приняты от любого стороннего терминала, в противном случае значение примет вид «-». Если вместо плюса или минуса там находится вопросительный знак, то линия неисправна:

Не упоминается в мануале опция -q, тем не менее, она работает, выводя информацию о количестве пользователей в системе:

С помощью -u можно узнать информацию о тех пользователях, которые активны в данный момент:

На этом же скрине видны изменения, которые происходят при использовании опции -H — у колонок с данными появились заголовки.А вот и зомби-процессы, которые показывает опция -d:

Кстати, поле EXIT при использовании этой опции не выводится. Чтобы увидеть его, следует использовать -a.

Опции who

Используя различные опции, можно получать именно ту информацию, которая нужна здесь и сейчас:

  • -a (—all) — включает в себя все основные опции.
  • — b (—boot) — показывает время загрузки операционной системы.
  • -d (—dead) — выводит перечень зомби-процессов.
  • — H (—heading) — никак не влияет на получаемую информацию, зато добавляет колонкам заголовки и помогает понять что где находится.
  • -m — показать пользователя, который сейчас работает в терминале.
  • -r — вывести текущий уровень запуска (runinit);
  • -t — показать последнее изменение системных часов;
  • -s— вывести только имя, терминальную сессию и время.
  • -q— вывести количество авторизованных пользователей.
  • -T — данные о терминальной сессии.
  • -u — показать активных пользователей.
  • —ips — вместо названия хостов показывает ips.
  • —lookup — используется в сочетании с —ips, выводит данные, которые основываются на сохраненном IP, если он доступен, а не на названии хоста.

Linux Which Command

13 Января 2020
|

Терминал

В этом руководстве мы рассмотрим команду which.

команда Linux используется для определения местоположения данного исполняемого файла, который выполняется при вводе имени исполняемого файла (команды) в командной строке терминала. Команда выполняет поиск исполняемого файла, указанного в качестве аргумента, в каталогах, перечисленных в переменной среды PATH.

Что такое PATH

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

Чтобы просмотреть содержимое вашей переменной PATH, используйте команду echo с аргументом:

    Вывод будет выглядеть примерно так:

Как использовать which команду

Синтаксис команды следующий:

Например, чтобы найти полный путь команды ping , вы должны набрать следующее:

    Результат будет примерно таким:

    Вы также можете указать несколько аргументов команды:

    Вывод будет включать полные пути к обоим и исполняемым файлам :

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

    Вывод покажет два полных пути к команде :

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

Команда используется для поиска команды путем поиска исполняемого файла команды в каталогах, указанных в переменной среды .

cat

Команда cat выводит содержание файлов в окне терминала.

cat позволяет:

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

Синтаксис команды cat:

Чтобы посмотреть содержимое файла .bash_log_out через терминал нужно ввести:

Чтобы склеить несколько файлов с помощью команды cat нужно просто указать названия файлов в аргументах, а результаты записать в новый файл. Например:

Основные опции cat:

  • -b — нумеровать только строки с содержимым;
  • -E — выводить $ в конец каждой строки;
  • -n — нумеровать все строки;
  • -s – удалять повторы пустых строк;
  • -T — выводить табуляции в виде ^I.

Команда lsof

Команда lsof отображает информацию о том, какие файлы используются тем или иным процессом. В Linux практически любое взаимодействие с системой рассматривается как взаимодействие с файлом. Если ваше приложение записывает данные в файл или открывает сетевое соединение, то команда отобразит соответствующую информацию по данному взаимодействию. Подобно команде , вы можете использовать команду для проверки открытых сетевых портов. Например, если вы хотите узнать, занят ли в вашей системе 80 порт, то, применив команду , вы получите информацию о том, какой именно процесс в данный момент его использует.

Ниже вы можете видеть, что процесс apache2 прослушивает порт 80. Вы также можете использовать команду для запроса информации по идентификатору процесса, чтобы узнать, по какому пути расположен соответствующий ему двоичный файл:

Имя файла в списке открытых файлов помогает точно определить происхождение процесса, в частности, мы теперь знаем, что это веб-сервер Apache.

Настройка истории Linux

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

Для форматирования можно использовать такие модификаторы:

  • %d – день;
  • %m – месяц;
  • %y – год;
  • %T – штамп времени;
  • %F — штамп даты.

Вы можете указать какие команды не стоит отображать, например, не будем выводить ls -l, pwd и date:

Также можно отключить вывод одинаковых команд:

Существует два флага, ignoredups и ignorespace. Второй указывает, что нужно игнорировать команды, начинающиеся с пробела. Если вы хотите установить оба значения, используйте флаг ignoreboth. Используйте переменную HISTSIZE, чтобы установить размер истории:

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

Для тестирования работы вы можете набирать эти команды прямо в терминале и сразу видеть результат, но для сохранения добавьте нужные строки в ваш ~/.bashrc. Например:

Готово, теперь осталось сохранить изменения и перезапустить ваши терминалы. Теперь ваша история будет выводить дату, игнорировать дубли и синхронизироваться между терминалами.

Опции who

Используя различные опции, можно получать именно ту информацию, которая нужна здесь и сейчас:

  • -a (—all) — включает в себя все основные опции.
  • — b (—boot) — показывает время загрузки операционной системы.
  • -d (—dead) — выводит перечень зомби-процессов.
  • — H (—heading) — никак не влияет на получаемую информацию, зато добавляет колонкам заголовки и помогает понять что где находится.
  • -m — показать пользователя, который сейчас работает в терминале.
  • -r — вывести текущий уровень запуска (runinit);
  • -t — показать последнее изменение системных часов;
  • -s — вывести только имя, терминальную сессию и время.
  • -q — вывести количество авторизованных пользователей.
  • -T — данные о терминальной сессии.
  • -u — показать активных пользователей.
  • —ips — вместо названия хостов показывает ips.
  • —lookup — используется в сочетании с —ips, выводит данные, которые основываются на сохраненном IP, если он доступен, а не на названии хоста.

Основные правила управления доступом

Объекты (например, файлы и процессы) имеют владельцев. Владельцы обладают обширным (но необязательно неограниченным) контролем над своими объектами.

  • Вы являетесь владельцами новых объектов, создаваемых вами.
  • Пользователь root с особыми правами, известный как суперпользователь, может действовать как владелец любого объекта в системе.
  • Только суперпользователь может выполнять административные операции особого значения.

Владельцем файла всегда является один человек, тогда как в группу владельцев могут входить несколько пользователей. По традиции информация о группах хранилась в фай­ле .

Команда curl

Команда curl позволяет взаимодействовать с внешними ресурсами посредством URL-адресов. Часто данная команда применяется для определения того, может ли ваше приложение связаться с другой службой, например, с базой данных, или для проверки работоспособности вашей службы.

Представьте, что у нас есть база данных MongoDB, которая не может связаться с внешним приложением, выдавая при этом сообщение об ошибке HTTP 500:

Параметр выводит информацию о заголовке HTTP-запроса, а параметр отвечает за тихий (silent) режим, при котором опускается тело HTTP-ответа от сервера. В то же время, проверка подключения к базе данных с локального хоста проходит успешно:

Так в чем же может быть проблема? Для начала необходимо проверить, можем ли мы с хоста, на котором установлено наше приложение, достучаться до других ресурсов, кроме базы данных:

Вроде всё в порядке. Теперь попробуем связаться с базой данных. Т.к. для подключения к базе данных наше приложение использует имя хоста базы данных, то сначала попробуем выполнить следующую команду:

Вывод команды означает, что заданный URL-адрес недоступен или хост не имеет соответствующим образом настроенного DNS-сервера, который можно использовать для сопоставления имени и IP-адреса.

Создание пользователя в Linux

Вся информация о пользователях находится в файле /etc/passwd. Мы могли бы создать пользователя linux просто добавив его туда, но так делать не следует, поскольку для этой задачи существуют специальные утилиты. Одна из таких утилит, это useradd. Рассмотрим ее подробнее.

Команда useradd

Это довольно простая команда, которая есть во всех дистрибутивах Linux. Она позволяет зарегистрировать нового пользователя или изменить информацию об уже имеющемся. Во время создания можно даже создать домашний каталог пользователя и скопировать в него системные файлы. Рассмотрим синтаксис команды:

$ useradd опции имя_пользователя

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

  • -b — базовый каталог для размещения домашнего каталога пользователя, по умолчанию /home;
  • -c — комментарий к учетной записи;
  • -d — домашний каталог, в котором будут размещаться файлы пользователя;
  • -e — дата, когда учетная запись пользователя будет заблокирована, в формате ГГГГ-ММ-ДД;
  • -f — заблокировать учетную запись сразу после создания;
  • -g — основная группа пользователя;
  • -G — список дополнительных групп;
  • -k — каталог с шаблонами конфигурационных файлов;
  • -l — не сохранять информацию о входах пользователя в lastlog и faillog;
  • -m — создавать домашний каталог пользователя, если он не существует;
  • -M — не создавать домашнюю папку;
  • -N — не создавать группу с именем пользователя;
  • -o — разрешить создание пользователя linux с неуникальным идентификатором UID;
  • -p — задать пароль пользователя;
  • -r — создать системного пользователя, не имеет оболочки входа, без домашней директории и с идентификатором до SYS_UID_MAX;
  • -s — командная оболочка для пользователя;
  • -u — идентификатор для пользователя;
  • -D — отобразить параметры, которые используются по умолчанию для создания пользователя. Если вместе с этой опцией задать еще какой-либо параметр, то его значение по умолчанию будет переопределено.

Теперь, когда вы знаете основные необходимые нам параметры утилиты мы можем перейти к разбору того, как выполняется создание нового пользователя linux. Сначала давайте посмотрим какие параметры будут применены для пользователя по умолчанию:

Как видите, по умолчанию домашний каталог пользователя будет создан в /home и будет использоваться оболочка /bin/sh. Теперь создадим минимального пользователя с минимальными настройками:

Был создан самый простой пользователь, без оболочки и пароля, а также без групп. Теперь немного усложним задачу и создадим пользователя с паролем и оболочкой /bin/bash:

Для того чтобы получать доступ к системным ресурсам пользователю нужно быть участником групп, у которых есть доступ к этим ресурсам. Дополнительные группы пользователя задаются с помощью параметра -G. Например, разрешим пользователю читать логи, использовать cdrom и пользоваться sudo:

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

Некоторых пользователей интересует создание пользователя с правами root linux, это очень просто делается с помощью useradd, если комбинировать правильные опции. Нам всего лишь нужно разрешить создавать пользователя с неуникальным uid, установить идентификатор в 0 и идентификатор основной группы тоже в 0. Команда будет выглядеть вот так:

Пожалуй, это все основные примеры как добавить пользователя linux. Дальше нам осталось взглянуть только на работу в графическом интерфейсе.

Создание нового пользователя linux в GUI

Затем откройте «Пользователи»:

Поскольку утилита запущена от имени обычного пользователя вы ничего не можете сделать. Поэтому нажмите кнопку «Разблокировать»:

Только после этого используйте кнопку со знаком плюс для создания нового пользователя Linux:

В открывшемся окне нужно заполнить все поля. Но тут намного больше ограничений, чем в методе через терминал. Вы не можете задать слишком простой пароль, а также нельзя настроить группы. Можно только указать будет ли пользователь включен в группу wheel с помощью выбора типа пользователя — администратор или обычный:

После этого создание пользователя linux завершено, новый пользователь появится в списке.

Использование процессора

Раздел использования ЦП показывает процент времени, затраченного ЦП на различные задачи. us Значение времени ЦП проводит выполняющиеся процессы в пользовательском пространстве. Точно так же sy значение — это время, потраченное на запуск процессов в пространстве ядра.

Linux использует «хорошее» значение для определения приоритета процесса. Процесс с высоким «хорошим» значением «приятнее» другим процессам и имеет низкий приоритет. Аналогично, процессы с более низким значением «nice» получают более высокий приоритет. Как мы увидим позже, «хорошее» значение по умолчанию может быть изменено. Время, затраченное на выполнение процессов с установленным вручную «nice», отображается в качестве niзначения.

Затем следует idвремя, в течение которого процессор остается бездействующим. Большинство операционных систем переводят ЦП в режим энергосбережения, когда он находится в режиме ожидания. Далее следует waзначение, которое время ЦП тратит на ожидание завершения ввода-вывода.

Прерывания — это сигналы для процессора о событии, которое требует немедленного внимания. Аппаратные прерывания обычно используются периферийными устройствами, чтобы сообщить системе о событиях, таких как нажатие клавиш на клавиатуре. С другой стороны, программные прерывания генерируются из-за определенных инструкций, выполняемых на процессоре. В любом случае ОС обрабатывает их, и время, затрачиваемое на обработку аппаратных и программных прерываний, задается hiи siсоответственно.

В виртуализированной среде часть ресурсов ЦП предоставляется каждой виртуальной машине (ВМ). ОС определяет, когда у нее есть работа, но она не может выполнить ее, потому что ЦП занят на другой виртуальной машине. Количество времени, потерянное таким образом, является временем «кражи», обозначенным как st.

Примеры использования команды w

Начнем с самого простого варианта — команды без опций:

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

Если к w linux применить параметр -h, заголовки у столбцов исчезнут. Новичкам так поступать не стоит, а то придется читать вывод наугад.

Тем, кто независимо от наличия или отсутствия заголовков, не совсем понимает, о чем идет речь в выводе команды, дадим подсказку-расшифровку:

  • USER – имя учетной записи.
  • TTY – название терминала.
  • FROM – имя хоста или IP адрес, с которого пользователь вошел в систему под конкретной учетной записью.
  • LOGIN – время, когда та или иная учетная запись впервые с момента включения машины зарегистрировалась в системе.
  • IDLE – время, когда пользователь проявил активность с определенного аккаунта.
  • JCPU – время, использованное всеми процессами, запущенными в терминале tty.
  • PCPU – время, использованное текущим процессом (каким именно — можно посмотреть в столбце WHAT).
  • WHAT – текущие процессы и команды, которыми занят пользователь под конкретной учетной записью.

Опция -u заставляет команду подсчитывать время, использованное текущим процессом и всеми процессами в tty, не обращая внимания на названия учетных записей. Использовать ее следует от имени администратора (добавляя перед командой  su либо sudo):

Для сравнения на скриншоте показан вывод команды с параметром -u и без оного.

Опция -s заметно урезает количество данных, выводимых командой. Время входа в систему, JCPU и PCPU показаны не будут.

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

Чтобы вместо имени хоста отображался IP-адрес, достаточно использовать команду w c параметром -i.

Давние пользователи Linux оценят параметр -o. Если применить его к команде w, вывод будет выглядеть так, как раньше — вместо числовых данных в столбцах IDLE, JCPU и PCPU появятся пустые строчки. Правда, произойдет это лишь при одном условии — когда количество времени, подсчитанное командой, составляет меньше 60 секунд.

Все указанные параметры можно сочетать между собой в различных комбинациях. Например, чтобы получить сокращенный вывод, в котором столбцы не будут подписаны, нужно набрать в терминале:

Что же касается имени аккаунта, то его имеет смысл указывать в записи команды, если на машине существует несколько разных учетных записей (к примеру, admin, user и guest_session_for_cat_Murzik).

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: