Для получения списка пользователей, работающих сейчас в системе, используется команда who со следующим синтаксисом:
/usr/bin/who [ -abdHlmpqrstTu ] [ файл ]
/usr/bin/who -q [ -n x ] [ файл ]
/usr/bin/who am i
Последний вариант выдает строку, соответствующую запрашивающему сеансу, и может использоваться для самоидентификации.
Утилита who выдает имя пользователя, терминал, время регистрации, время, прошедшее после последней выполненной команды, а также идентификатор процесса командного интерпретатора. Для получения этой информации она просматривает файл /var/adm/utmp. Если указан файл (который должен иметь формат utmp(4)), информация берется из него.
В общем случае, результат имеет следующий вид:
имя [ состояние ] терминал время [ ожидание ] [ pid ] [ комментарий ] [ статус выхода ]где:
Имя
регистрационное имя пользователя
Состояние
возможность записи на терминал
Терминал
имя терминала из каталога /dev
Время
время регистрации пользователя
Ожидание
время, прошедшее после последнего действия пользователя
|
|
Pid
идентификатор процесса командного интерпретатора
Комментарий
строка комментария из файла /etc/inittab (SVR4)
Статус выхода
статус возврата для "мертвых" процессов
Опции команды who представлены в табл. 7.
Таблица 7. Опции команды who
Опция | Назначение | ||||||
-a | Обрабатывает /var/adm/utmp или указанный файл с опциями -b, -d, -l, -p, -r, -t, -T и -u. | ||||||
-b | Выдает дату и время последней перезагрузки. | ||||||
-d | Выдает все процессы, прекращенные и не перезапущенные процессом init. Для "мертвых" процессов будет выдано поле статуса выхода. Это может пригодиться для выяснения причины прекращения процесса. Только для SVR4. | ||||||
-H | Выдает заголовки столбцов. | ||||||
-l | Выдает только терминалы, на которых система ожидает регистрации пользователей. В качестве имени для них выдается LOGIN. Остальные поля - такие же, как и для пользователей, но поле состояния не выводится. | ||||||
-m | Выдает информацию только о текущем терминале. | ||||||
-n x | Выдает по x пользователей в строке. Значение x должно быть не менее 1. Опция -nможет использоваться только с опцией -q. | ||||||
-p | Выдает информацию об активных процессах, запущенных ранее процессом init. В поле имени выдается имя программы, запущенной процессом init в соответствии с файлом/sbin/inittab. Поля состояния, терминала и ожидания в этом случае не имеют смысла. Поле комментария показывает идентфикатор строки из файла /sbin/inittab, запустившей этот процесс. Только для SVR4. | ||||||
-q | (quick who) Выдает только имена и количество зарегистрированных пользователей. Если задана эта опция, другие опции игнорируются. | ||||||
-r | Показывает текущий уровень выполнения процесса init. Только для SVR4. | ||||||
-s | Выдает только поля имени, терминала и времени регистрации. Используется по умолчанию. | ||||||
-T | То же, что и опция -s, но также выдаются поля состояния, времени ожидания, pid и комментарий. В поле состояния выдается один из следующих символов:
|
Рассмотрим примеры выполнения команды who в ОС Solaris 8:
|
|
В простейшем случае программа who вызывается без параметров:
[kravchuk@arturo 09:45:35 /]$ whoroot console Фев 27 21:34 (:0)informix pts/1 Мар 25 10:13 (khomjak.profix.com)eugene pts/3 Мар 22 18:23 (khomjak.profix.com)serj pts/4 Мар 18 10:41 (sysadm.profix.com)serj pts/15 Мар 25 11:32 (sysadm.profix.com)kravchuk pts/14 Мар 26 09:39 (creator.profix.com)slavik pts/2 Мар 21 14:18 (slavik.profix.com)informix pts/17 Мар 21 13:19 (bachin.profix.com)informix pts/5 Мар 5 14:48 (slavik.profix.com)root pts/13 Фев 27 21:35 (:0.0)root pts/16 Мар 25 17:24 (:0.0)Наконец, вот как используется команда who для самоидентификации:
[kravchuk@arturo 09:45:38 /]$ who am ikravchuk pts/14 Мар 26 09:39 (creator.profix.com)