Запись процессов в файл пользователей имена которых начинаются на определенные символы


Запись процессов в файл пользователей имена которых начинаются на определенные символы

07.11.2017 09:31:15 Просмотров 74 Источник

Стоит задача, необходимо найти процессы пользователей и записать их в файл, процессы всех пользователей имена которых начинаются на определенные символы, допустим us Я ввожу команду ps aux | grep "^[us].*" > info_proc.txt Но в файл записываются все процессы от моего имени, а не от имен которые начинаются на us в чем ошибка, подскажите, пожалуйста.

У вопроса есть решение - Посмотреть?

https://ru.stackoverflow.com/questions/741273/%d0%97%d0%b0%d0%bf%d0%b8%d1%81%d1%8c-%d0%bf%d1%80%d0%be%d1%86%d0%b5%d1%81%d1%81%d0%be%d0%b2-%d0%b2-%d1%84%d0%b0%d0%b9%d0%bb-%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d1%82%d0%b5%d0%bb%d0%b5%d0%b9-%d0%b8%d0%bc%d0%b5%d0%bd%d0%b0-%d0%ba%d0%be%d1%82%d0%be%d1%80%d1%8b%d1%85-%d0%bd%d0%b0%d1%87%d0%b8%d0%bd%d0%b0%d1%8e%d1%82%d1%81%d1%8f-%d0%bd%d0%b0-%d0%be%d0%bf%d1%80%d0%b5%d0%b4%d0%b5%d0%bb%d0%b5%d0%bd%d0%bd%d1%8b%d0%b5-%d1%81#comment1133403_741273
Уберите квадратные скобки ps aux | grep "^us" > info_proc.txt

Ответы - Запись процессов в файл пользователей имена которых начинаются на определенные символы / Запись процессов в файл пользователей имена которых начинаются на определенные символы

Является ответом!
jfs

07.11.2017 09:59:40

^[us] означает: любая строка, которая начинается либо на u либо на s.

Замените на rg '^us', чтобы найти строки, начинающиеся на us.

Чтобы получить информацию о процессах в JSON формате, можно Питон использовать:

#!/usr/bin/env python
import json
import pustil  # apt install python-psutil || pip install psutil

for process in psutil.process_iter():
    if process.username().startswith('us'):
        print(json.dumps(process.as_dict()))
Hellseher

07.11.2017 04:09:26

День добрый.

Вам подойдет pgrep

~$ pgrep REGEX
~$ pgrep -u user1,user2

выдаст все PID найденного патерна пользователя.


UPD

pgrep использует регулярки только к имени программы и параметрам командной строки. Параметр -u принимает полное имя пользователя или несколько через запятую.

Ссылки

https://ru.stackoverflow.com/questions/741273/%d0%97%d0%b0%d0%bf%d0%b8%d1%81%d1%8c-%d0%bf%d1%80%d0%be%d1%86%d0%b5%d1%81%d1%81%d0%be%d0%b2-%d0%b2-%d1%84%d0%b0%d0%b9%d0%bb-%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d1%82%d0%b5%d0%bb%d0%b5%d0%b9-%d0%b8%d0%bc%d0%b5%d0%bd%d0%b0-%d0%ba%d0%be%d1%82%d0%be%d1%80%d1%8b%d1%85-%d0%bd%d0%b0%d1%87%d0%b8%d0%bd%d0%b0%d1%8e%d1%82%d1%81%d1%8f-%d0%bd%d0%b0-%d0%be%d0%bf%d1%80%d0%b5%d0%b4%d0%b5%d0%bb%d0%b5%d0%bd%d0%bd%d1%8b%d0%b5-%d1%81/741459#comment1134584_741459
не работает: pgrep -u 'r.+' говорит неверное имя пользователя (pgrep -u root без ошибок). man pgrep не упоминает, что regex вообще должны поддерживаться для -u
https://ru.stackoverflow.com/questions/741273/%d0%97%d0%b0%d0%bf%d0%b8%d1%81%d1%8c-%d0%bf%d1%80%d0%be%d1%86%d0%b5%d1%81%d1%81%d0%be%d0%b2-%d0%b2-%d1%84%d0%b0%d0%b9%d0%bb-%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d1%82%d0%b5%d0%bb%d0%b5%d0%b9-%d0%b8%d0%bc%d0%b5%d0%bd%d0%b0-%d0%ba%d0%be%d1%82%d0%be%d1%80%d1%8b%d1%85-%d0%bd%d0%b0%d1%87%d0%b8%d0%bd%d0%b0%d1%8e%d1%82%d1%81%d1%8f-%d0%bd%d0%b0-%d0%be%d0%bf%d1%80%d0%b5%d0%b4%d0%b5%d0%bb%d0%b5%d0%bd%d0%bd%d1%8b%d0%b5-%d1%81/741459#comment1136619_741459
@jfs Operands pattern Specifies an Extended Regular Expression for matching against the process names or command lines. странно что не работает
https://ru.stackoverflow.com/questions/741273/%d0%97%d0%b0%d0%bf%d0%b8%d1%81%d1%8c-%d0%bf%d1%80%d0%be%d1%86%d0%b5%d1%81%d1%81%d0%be%d0%b2-%d0%b2-%d1%84%d0%b0%d0%b9%d0%bb-%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d1%82%d0%b5%d0%bb%d0%b5%d0%b9-%d0%b8%d0%bc%d0%b5%d0%bd%d0%b0-%d0%ba%d0%be%d1%82%d0%be%d1%80%d1%8b%d1%85-%d0%bd%d0%b0%d1%87%d0%b8%d0%bd%d0%b0%d1%8e%d1%82%d1%81%d1%8f-%d0%bd%d0%b0-%d0%be%d0%bf%d1%80%d0%b5%d0%b4%d0%b5%d0%bb%d0%b5%d0%bd%d0%bd%d1%8b%d0%b5-%d1%81/741459#comment1136796_741459
эта цитата не имеет отношения к -u опции (options). Она описывает позиционный параметр (operands). Где вы эту команду пробовали?
https://ru.stackoverflow.com/questions/741273/%d0%97%d0%b0%d0%bf%d0%b8%d1%81%d1%8c-%d0%bf%d1%80%d0%be%d1%86%d0%b5%d1%81%d1%81%d0%be%d0%b2-%d0%b2-%d1%84%d0%b0%d0%b9%d0%bb-%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d1%82%d0%b5%d0%bb%d0%b5%d0%b9-%d0%b8%d0%bc%d0%b5%d0%bd%d0%b0-%d0%ba%d0%be%d1%82%d0%be%d1%80%d1%8b%d1%85-%d0%bd%d0%b0%d1%87%d0%b8%d0%bd%d0%b0%d1%8e%d1%82%d1%81%d1%8f-%d0%bd%d0%b0-%d0%be%d0%bf%d1%80%d0%b5%d0%b4%d0%b5%d0%bb%d0%b5%d0%bd%d0%bd%d1%8b%d0%b5-%d1%81/741459#comment1137863_741459
@jfs да мой косяк, pgrep использует регулярки для для программы и параметров командной строки, пользователи должны быть указаны буквально через запятую если больше одного. Поправил ответ.
https://ru.stackoverflow.com/questions/741273/%d0%97%d0%b0%d0%bf%d0%b8%d1%81%d1%8c-%d0%bf%d1%80%d0%be%d1%86%d0%b5%d1%81%d1%81%d0%be%d0%b2-%d0%b2-%d1%84%d0%b0%d0%b9%d0%bb-%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d1%82%d0%b5%d0%bb%d0%b5%d0%b9-%d0%b8%d0%bc%d0%b5%d0%bd%d0%b0-%d0%ba%d0%be%d1%82%d0%be%d1%80%d1%8b%d1%85-%d0%bd%d0%b0%d1%87%d0%b8%d0%bd%d0%b0%d1%8e%d1%82%d1%81%d1%8f-%d0%bd%d0%b0-%d0%be%d0%bf%d1%80%d0%b5%d0%b4%d0%b5%d0%bb%d0%b5%d0%bd%d0%bd%d1%8b%d0%b5-%d1%81/741459#comment1139747_741459
Ну имена можно получить через getent.
Помочь в развитии проекта:
Закрыть X