Я использовал команду для получения, список пользователей вошел в систему моя машина, но я не могу понять значение команды.
awk -F':' '$2 ~ "\$" {print $1}' /etc/shadow
Это не показывает пользователям, зарегистрированным Вашей машине, но учетным записям пользователей, которым установили пароль. Обратите внимание, что это должно, Вы использовать gawk
вместо mawk
, "\$"
должны были бы быть исправлены, чтобы быть или /\$/
или "\\$"
.
-F:
: Используйте двоеточие в качестве разделителя $2 ~ /\$/
: делает второе поле (пароль), содержит знак доллара print $1
: затем распечатайте первое поле (имя пользователя) факт, пользователь зарегистрирован, не хранится в /etc/shadow
.
Значение Вашей команды было объяснено достаточно хорошо дважды, но я хочу добавить, как можно действительно перечислить, все в настоящее время входили в систему пользователи вместо этого:
существует специальная команда для этого, названного who
.
Это печатает список зарегистрированных пользователей и их состояний. Если Вы добавляете -a
, это также включает пользователей системы; добавление -u
(включенный в -a
) печатает также процесс входа в систему PID и состояние ожидания.
я просто использую его вместе с -H
опция получить некоторые заголовки столбца:
$ who -H
NAME LINE TIME COMMENT
myusername :0 2016-01-26 08:08 (:0)
myusername pts/0 2016-01-26 08:16 (:0)
Примечание, которое каждый терминал Вы открываете также, перечислено (значение в LINE
, столбец pts/?
).
Команда не произведет список пользователей, зарегистрированных в машину; на самом деле команда проанализирует /etc/shadow
, то, которое не имеет никакого понятия пользователей, вошло в систему в машину.
Команда произведет список пользователей, которым установили пароль для их учетной записи.
Вот разбивка команды (обратите внимание, что это отнесено конкретно в MAWK, который является версией AWK, установленной на Ubuntu, где, указывая шаблон, включенный в ""
корректно и требует того же выхода, требуемого для шаблона, включенного в //
, как объяснено в man mawk
):
-F':'
: устанавливает разделителя полей (корреспондент к внутреннему AWK FS
переменная) к :
; это означает, что каждая запись (или строка в этом случае) поля будет splitted на :
символ, и это ссылается на такой как $1
, $2
, $3
... сошлется соответственно на первую разграниченную двоеточием строку текущей записи, вторую разграниченную двоеточием строку текущей записи, третью разграниченную двоеточием строку текущей записи....
$2 ~ "\$"
: это - так называемый "шаблон"; это - условие, которое оценено каждый раз, когда запись обрабатывается. Условие в этом случае: если второе поле соответствует regex \$
(т.е. если второе поле содержит символ $
), выполните следующее "действие".
{print $1}
: это - так называемое "действие"; это - блок кода, который выполняется каждый раз, когда предыдущее условие оценивает как TRUE. Это печатает первое поле.
Кос уже объяснил, кто команда Вы отправили работы и почему это не полезно для нахождения зарегистрированных пользователей. Мой ответ намеревается ответить на вторую половину Вашего вопроса - как Вы на самом деле находите список зарегистрированных пользователей? Существует на самом деле несколько путей.
Командующий байта уже упомянул who
.
skolodya@ubuntu:$ who
xieerqi :0 2016-01-26 10:52 (:0)
xieerqi pts/6 2016-01-26 10:52 (:0)
xieerqi pts/0 2016-01-26 10:55 (:0)
Существует другая команда, w
, который покажет более подробный список зарегистрированных пользователей. Это очень полезно, если Вы работаете над сервером, можно проверить, зарегистрирован ли пользователь от надлежащего IP-адреса, сколько ЦП их программы израсходовали и т.д.
skolodya@ubuntu:$ w
10:56:23 up 4 min, 3 users, load average: 0.49, 0.55, 0.26
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
xieerqi :0 :0 10:52 ?xdm? 1:51 0.33s init --user
xieerqi pts/6 :0 10:52 30.00s 0.01s 0.01s /bin/mksh
xieerqi pts/0 :0 10:55 0.00s 0.02s 0.00s w
С другой стороны, users
произведет просто список имен пользователей, один на вход в систему, поэтому если я буду зарегистрирован в TTY и с два gnome-terminal
вкладки это покажет 3 из моих имен пользователей.
skolodya@ubuntu:$ users
xieerqi xieerqi xieerqi
Существует также last
команда, которая показывает расширенный список логинов (включая предыдущий). Для в настоящее время входил в систему пользователи, которых это показывает still logged in
строка. Знание, что Вы могли отфильтровать вывод last
как так:
skolodya@ubuntu:$ last | awk '/still/'
xieerqi pts/0 :0 Tue Jan 26 10:55 still logged in
xieerqi pts/6 :0 Tue Jan 26 10:52 still logged in
xieerqi :0 :0 Tue Jan 26 10:52 still logged in