Получение списка зарегистрировавшихся пользователей
Для получения списка пользователей, работающих сейчас в системе, используется команда 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 и комментарий. В поле состояния выдается один из следующих символов: |
+ | терминал разрешает запись другим пользователям; |
- | терминал запрещает запись другим пользователям; |
? | возможность записи на терминал не определена. |
[kravchuk@arturo 09:40:03 /]$ who -a | more . system boot Фев 23 15:39 . run-level 3 Фев 23 15:39 3 0 S rc2 . Фев 23 15:41 old 84 id= s2 term=0 exit=0 root + console Фев 27 21:34 0:28 4612 (:0) rc3 . Фев 23 15:41 old 359 id= s3 term=0 exit=0 sac . Фев 23 15:41 old 411 id= sc LOGIN console Фев 23 15:41 0:28 428 panaslog . Фев 23 15:41 old 413 id= e1 netwatch . Фев 25 12:02 old 415 id= up term=15 exit=0 zsmon . Фев 23 15:41 old 423 informix + pts/1 Мар 25 10:13 15:21 1796 (khomjak.profix.com) eugene + pts/3 Мар 22 18:23 15:24 23392 (khomjak.profix.com) serj + pts/4 Мар 18 10:41 old 13278 (sysadm.profix.com) serj + pts/15 Мар 25 11:32 14:51 3004 (sysadm.profix.com) kravchuk + pts/14 Мар 26 09:39 . 11615 (creator.profix.com) slavik + pts/2 Мар 21 14:18 16:13 14526 (slavik.profix.com) informix + pts/17 Мар 21 13:19 17:50 14012 (bachin.profix.com) informix pts/6 Мар 25 18:34 15:05 3572 id=t800 term=0 exit=0 (lyapota.profix.com) lyapota pts/7 Мар 25 18:34 17:58 3577 id=t900 term=0 exit=0 (lyapota.profix.com) informix + pts/5 Мар 5 14:48 15:33 27664 (slavik.profix.com) kravchuk pts/8 Мар 25 18:24 15:15 8916 id=tB00 term=0 exit=0 --More--
В простейшем случае программа who вызывается без параметров:
[kravchuk@arturo 09:45:35 /]$ who root 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 i kravchuk pts/14 Мар 26 09:39 (creator.profix.com)