Как узнать, сколько пользователей в Linux

Команда who показывает вам каждый сеанс входа в систему, открытый на компьютере:

кто

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

вес

Мы можем посчитать количество открытых сессий путем подсчета строк в выходных данных команды who или w, если мы используем опцию -h (для подавления строк заголовка, которые мы не хотим считать). Для этого мы передадим выходные данные с помощью вертикальной черты («|») для создания конвейера команд, отправив выходные данные одной программы следующей программе в конвейере. Здесь мы подсчитываем строки как who, так и w -h, отправляя их в wc-l, эффективно генерируя количество активных сессий.

кто | wc -l; ш-ч | туалет

Подсчет уникальных пользователей

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

кто | вырезать

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

Для этого мы можем добавить команду sort -u. Это сортирует имена в алфавитном порядке и отфильтровывает любые строки, которые не являются уникальными:

кто | cut -d -f l | сортировать -у

И, наконец, для подсчета этих уникальных пользователей мы добавляем wc -l в конце нашего командного конвейера:

кто | cut -d -f l | сортировать -u | туалет

Использование ps для подсчета любого пользователя, выполняющего процесс

Еще один полезный метод — использовать команду ps для создания списка каждого пользователя в системе, которому принадлежит текущий запущенный процесс. Для этого мы можем использовать ps с параметрами -e, -a, -h и -o user. Их можно комбинировать следующим образом:

ps -eaho user

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

Обратите внимание, что помимо пользователей, перечисленных ранее кем, мы также видим здесь root. Команда who показывает только пользователей, вошедших в терминальную сессию, но ps перечислит всех пользователей, у которых есть запущенный процесс, даже если у них нет открытого терминала. Команда ps включает в себя root и может включать других системных пользователей.

Как и раньше, мы можем отсортировать наш вывод и перечислить только уникальные имена:

ps -eaho user | сортировать -у

…и произвести общее желаемое:

ps -eaho user | сортировать -u | туалет

Ссылка на основную публикацию