Какие командные строки я должен использовать для следующего? [closed]

-2
03.07.2016, 12:38
1 ответ

Я предполагаю, что вы еще не очень хорошо знакомы с Unix, иначе вы бы не спросили об этом, поэтому я собираюсь включить мыслительный процесс с помощью которого вы придете к такой команде. Тогда вы сможете найти следующий самостоятельно.

Во-первых, вам нужно получить список запущенных процессов. Чтобы перечислить запущенные процессы, используйте ps .Вы, вероятно, уже знаете это, но это хорошее место для начала. Вы видели такие команды, как ps ax , что означало бы перечислить все ( a ), даже те, у которых нет связанного tty ( x ).

Теперь необходимо указать ему выбрать все процессы ( a ) и отобразить имена исполняемых файлов ( c ). Вы можете включить x или нет: любой интерактивный bash обязательно будет иметь связанный tty, но сценарий оболочки может не включать его, поэтому включать его зависит от того, что вам нужно. Чтобы упростить синтаксический анализ его вывода, также удобно ограничить его вывод интересующими нас значениями, а именно пользователем и командой ( o user, command ).

Это дает следующее:

$ ps aco user,command
root   login
root   bash
user   bash
root   bash
user   lynx
...

Теперь вам нужно отфильтровать его, чтобы найти экземпляры bash для каждого пользователя. Для этого вы можете передать его по конвейеру awk , используя скрипт $ 2 == "bash" {print $ 1} , что означает, что "если второй столбец -" bash ", напечатайте первый столбец ».

$ ps aco user,command | awk '$2=="bash" {print $1}'
root
user
root

Наконец, вы хотите отсортировать вывод и удалить дубликаты, используя sort и uniq .

$ ps aco user,command | awk '$2=="bash" {print $1}' | sort | uniq
root
user

Если вам нужно количество пользователей, запускающих 'bash', вы можете просто подсчитать строки в выводе этого:

$ ps aco user,command | awk '$2=="bash" {print $1}' | sort | uniq | wc -l
2

Затем вы можете записать вывод этих строк в файл, используя перенаправление вывода, то есть команда> файл .

2
28.01.2020, 05:16

Теги

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