Название команды who Linux полностью отображает ее функциональность — она служит для получения информации о пользователях, которые подключены к системе, в том числе и об терминальных сессиях, через которые происходит подключение.
При выполнении команды используются данные из файла /etc/utmp, хотя можно прописать в терминале и другой файл (как правило, используют /etc/wtmp либо /etc/inittab).
Содержание статьи
Синтаксис who
Синтаксис этой команды достаточно прост и выглядит так:
who опции имя_файла аргументы
Вообще, можно использовать who без каких-либо опций или аргументов. В таком случае отобразится набор данных по умолчанию об учетных записях подключенных пользователей — имя пользователя, название пользовательского терминала, время подключения.
Также можно прописывать команду в виде who am i — тогда она будет идентифицировать конкретно того пользователя, который работает сейчас в терминале (аналогично опции -m).
Опции who
Используя различные опции, можно получать именно ту информацию, которая нужна здесь и сейчас:
- -a (--all) — включает в себя все основные опции.
- - b (--boot) — показывает время загрузки операционной системы.
- -d (--dead) — выводит перечень зомби-процессов.
- - H (--heading) — никак не влияет на получаемую информацию, зато добавляет колонкам заголовки и помогает понять что где находится.
- -m — показать пользователя, который сейчас работает в терминале.
- -r — вывести текущий уровень запуска (runinit);
- -t — показать последнее изменение системных часов;
- -s — вывести только имя, терминальную сессию и время.
- -q — вывести количество авторизованных пользователей.
- -T — данные о терминальной сессии.
- -u — показать активных пользователей.
- --ips — вместо названия хостов показывает ips.
- --lookup — используется в сочетании с --ips, выводит данные, которые основываются на сохраненном IP, если он доступен, а не на названии хоста.
Примеры использования who
Используя опцию -a, мы получаем максимум данных, которыми команда готова снабдить нас без каких-либо дополнительных указаний. В состав этой опции входят опции -b, -d, --login, -p, -r, -t, -T, -u:
who -a
Этих данных больше, чем при простом использовании who:
Чтобы узнать только время загрузки системы, достаточно написать в терминале:
who --login
Нужно узнать текущий уровень запуска (runinit)? Для этого служит команда who в сочетании с опцией -r:
who -r
При использовании опции -s выводятся значения NAME, LINE и TIME — информация, идентичная той, что будет получена без использования каких-либо опций. Все то же самое, но уже с добавлением данных о состоянии терминальной сессии, показывает опция -T.
Состояние — это возможность принимать сообщения от других терминалов. Если рядом с названием терминальной линии стоит «+», как на скриншоте, значит, сообщения могут быть приняты от любого стороннего терминала, в противном случае значение примет вид «-». Если вместо плюса или минуса там находится вопросительный знак, то линия неисправна:
who -T
Не упоминается в мануале опция -q, тем не менее, она работает, выводя информацию о количестве пользователей в системе:
who -q
С помощью -u можно узнать информацию о тех пользователях, которые активны в данный момент:
who -u -H
На этом же скрине видны изменения, которые происходят при использовании опции -H — у колонок с данными появились заголовки.А вот и зомби-процессы, которые показывает опция -d:
who -d
Кстати, поле EXIT при использовании этой опции не выводится. Чтобы увидеть его, следует использовать -a.
Выводы
Команда who Linux — это интересный и полезный инструмент для пользователей Linux. С ее помощью можно узнать всю доступную информацию о пользователях, которые активны в системе сейчас или были активны раньше. Мы постарались как можно подробнее рассказать вам о правилах и нюансах использования who, однако, если у вас остались вопросы, задавайте их в комментариях.
Интересно
who_wc="$(who | wc -l)"
if (( 1 < "$who_wc" ))
можно использовать как простейший сканер вторжений?
Если кто-то подключится по ssh, то да утилита его увидит, если же будет использован какой нибудь шелл на том же python/perl/php, то очень вряд-ли.
А просто w не тоже самое?
то же
Спасибо за статью, теперь я знаю на одну команду больше 🙂