Infelizmente ps é um pouco estranho nesse sentido. Você pode usar pgrep para ajudar ps . Em pgrep , todas as condições devem corresponder. Use essa sintaxe por exemplo:
ps -p"$(pgrep -d, -u john processname)"
pgrep imprime todos os pids separados por vírgula que correspondem às condições. Isso é dado a ps como um argumento para o sinalizador -p . -p seleciona uma lista de pids.