2

Я ищу команду или сценарий чтобы получить процессы, которые в данный момент выполняются пользователями в системе. Я попробовал команду ps -Af , однако все процессы, включая корневые процессы, всплывают. Есть ли какая-нибудь команда для запуска процессов только пользователем? В противном случае мне понадобится помощь в написании скрипта для извлечения корневых процессов из команды ps -Af .

6 ответов6

2

Это даст вам каждый процесс, НЕ принадлежащий root:

ps -N -u root 
1

ps --deselect -U root . --deselect инвертирует логику -U root .

0

как насчет ps -U <username> (работает на MacOSX) или канала через grep

ps -Af | grep -v 'root' должен показывать все процессы, не принадлежащие root. Но будьте осторожны, grep не будет ограничен именем пользователя. Процесс, раскрывающий некоторый путь, содержащий "корень", также будет удален из результата.

0

Если вы хотите удалить root , просто выполните ps -Af и передайте его через grep:

ps -Af | grep -v root

Конечно, это небрежно. Если вы запускаете программу под названием troot, вы ее тоже потеряете. Вы можете быть более точным, используя awk и удаляя любую строку с корнем в правом столбце. У меня нет вывода ps -Af передо мной, но ради аргумента давайте предположим, что идентификатор пользователя находится в 3-м столбце. В этом случае вы хотели бы сделать это:

ps -Af | awk '$3 != "root" { print $0 }'
0

Вы должны попробовать whowatch

Это дает вам хороший обзор того, какие пользователи вошли в систему, какие обработанные они в настоящее время работают и так далее.

-1

ps -Af | grep -v root не идеален. попробуй ps -Af | awk '$1 != "root" {print $0}'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .