Самый старый процесс пользователей в who

ls | shuf -n $(( $(ls | wc -l) *  30 / 100))

Все, что вам нужно сделать, это найти количество файлов и процент отдельно. Для этого

  1. $(ls | wc -l)сначала подсчитает количество файлов в каталоге
  2. $(( x * 30 /100))выполнит арифметическую операцию по нахождению 30% от этого числа
  3. Наконец, это число передается shuf -nдля получения случайного списка файлов
1
27.11.2020, 15:16
1 ответ

Самый старый PID с некоторым именем пользователя userможет быть получен

pgrep -U user -o

где -oотвечает за возврат самого старого PID (см. руководство pgrep).

Чтобы запустить это для всех пользователей, которые в данный момент вошли в систему:

users | tr ' ' '\n' |
while read user; do
    printf '%s %d\n' "$user" "$(pgrep -U "$user" -o)"
done

При этом вызывается утилита users, которая выводит в одной строке текущих пользователей, вошедших в систему. trизменяет пробелы между именами пользователей на новые строки, и цикл считывает их один за другим в переменную user. Для каждого имени пользователя вызывается pgrep -U "$user" -o. Вывод этого используется в качестве аргумента для printfдля форматирования результирующей строки для этого конкретного пользователя.

С оболочками, утилита readкоторых может читать до разделителя с -d(, например. zshи bash), вы можете избавиться от trвот так:

users |
while read -d ' ' user; do
    printf '%s %d\n' "$user" "$(pgrep -U "$user" -o)"
done
2
18.03.2021, 22:47

Теги

Похожие вопросы