Назад | Перейти на главную страницу

Можно ли отфильтровать вывод команды Linux ps командой пользователя AND?

Мне нужен pid для процесса, заданного его владельцем и его командой. Я могу фильтровать процесс для каждого пользователя с помощью «ps -u xxx» и его команды с помощью «ps -C yyy», но когда я пробую «ps -u xxx -C yyy», они объединяются с использованием логики ИЛИ. Мне нужна логика И. Как я могу этого добиться?

Использовать pgrep?

pgrep -U xxx yyy

он возвращает только pid (или pid, если совпадают несколько процессов).

Ты используешь comm чтобы найти PID, общие для обоих условий:

ps -u xxx | sort > /tmp/ps-uxxx
ps -C yyy | sort > /tmp/ps-Cyyy
comm -1 -2 /tmp/ps-uxxx /tmp/ps-Cyyy

Используя bash, вы можете использовать замену процесса, чтобы избежать необходимости во временных файлах:

comm -1 -2 <(ps -u xxx | sort) <(ps -C yyy | sort)

Использовать grep?

ps -u xxx | grep yyy | grep -v grep