ps에서 두 선택 조건을 논리적으로 AND하는 방법은 무엇입니까?

ps에서 두 선택 조건을 논리적으로 AND하는 방법은 무엇입니까?

매개변수 없이 기본 동작을 시뮬레이션하고 있습니다 ps.

  • 선택 기준 중 하나는 현재 쉘과 동일한 터미널을 제어하는 ​​프로세스를 찾는 것입니다.

  • 또 다른 선택 조건은 euid가 현재 사용자인 프로세스를 찾는 것입니다.

따라서 사용자 선택과 터미널 선택을 논리적으로 AND해야 합니다.

$ ps  -u t -t /dev/pts/4 -o pid,tname,time,ucmd   
$ ps  -u t -t pts/4 -o pid,tname,time,ucmd   
$ ps  -u t -t /dev/tty -o pid,tname,time,ucmd 

나는 현재 쉘의 제어 터미널이 이라는 것을 알고 있습니다 /dev/pts/4. 그러나 이들 모두는 다른 제어 터미널이 있거나 없는 프로세스를 제공합니다. 감사해요.

답변1

프로세스 선택은 통과 -u및 누적 됩니다. 사용자로 실행 중인 모든 프로세스 와 가장 중요한 것은 제어 터미널 또는 가 있는 모든 프로세스를 -t선택합니다 . 특정 제어 터미널에 대한 프로세스를 보려면 다음을 단독으로 사용하십시오.t/dev/pts/4/dev/tty-t

ps -t pts/4 -o pid,tname,time,ucmd

~처럼POSIX에 의해 지정됨, 프로세스 선택 옵션이 추가됩니다.

와는 별개로-에프,-엘,-N 목록, 그리고-영형 체재, 표시된 모든 옵션은 프로세스 선택을 위한 것입니다. 아무것도 지정하지 않으면 기본 목록이 무시되고메모모든 선택 기준 옵션의 OR로 표시되는 프로세스를 선택해야 합니다.

조건을 결합하고 모든 조건과 일치하는 프로세스만 나열하려면 다음을 사용할 수 있습니다 pgrep.

ps -p $(pgrep -d, -u t -t pts/4) -o pid,tname,time,ucmd

관련 정보