답변:
pgrep
의 출력 옵션은 꽤 제한적입니다. ps
중요한 정보를 얻으려면 정보를 다시 보내야합니다 . 에서 bash 함수를 사용하여이를 자동화 할 수 있습니다 ~/.bashrc
.
function ppgrep() { pgrep "$@" | xargs --no-run-if-empty ps fp; }
그런 다음 명령을 호출하십시오.
ppgrep <pattern>
ps
에서 플래그에는 하이픈 이 필요합니다.function ppgrep() { pgrep "$@" | xargs ps -fp 2> /dev/null; }
-r
이 있으며, 목록을받은 경우에만 명령을 실행합니다.
ps fp $(pgrep -d, "$@")
결합 pgrep
에 ps
사용 xargs
!
pgrep <your pgrep-criteria> | xargs ps <your ps options> -p
예를 들어보십시오
pgrep -u user | xargs ps -f -p
의 전체 프로세스 목록을 얻으려면 user
.
첫 번째 줄을 열 이름으로 유지하는 것이 좋습니다. grep
항상 열 이름을 삭제합니다.
다음은 PID + 전체 명령 줄 만 제공합니다. "모든 정보 ps
가하는"다른 답변보기 ...
대부분의 리눅스는 procps-ng를 사용 합니다. 2012 년에 출시 된 3.3.4 이후 pgrep -a
( --list-full
)는 전체 명령 줄을 보여줍니다.
참고 : 기본적으로 pgrep은 실행 파일 이름에 지정한 패턴 만 일치합니다. greps ps와 같이 전체 명령 행과 일치 시키려면 -f
( --full
) 옵션을 추가하십시오 .
이전 버전 (원래 procps 프로젝트 포함)에서 -l
옵션에 정보가 표시되었지만 동작은 다양합니다.
pgrep -fl
전체 명령 행과 패턴을 일치시키고 전체 명령 행을 표시했습니다.pgrep -l
단독으로 실행 파일 이름 만 일치하고 실행 파일 이름 만 표시했습니다. * BSD가 어떤 코드를 사용하는지는 모르지만 매뉴얼 페이지 에 이전 -fl
동작이 기록되어 있습니다.
불행히도 -fl
최근 procps-ng에서 -f
( --list-name
)는 이식 가능하게 사용할 수 없으며 항상 실행 파일 이름 만 인쇄합니다.
GNU 버전의 pgrep
경우 -i
(대 / 소문자 구분 안함)는 지원되지 않으며 long + fuzzy 출력은을 통해 달성됩니다 -af
.
$ pgrep -af apache
OUTPUT:
1748 /usr/sbin/apache2 -k start
맨 페이지 :
-a, --list-full
List the full command line as well as the process ID. (pgrep only.)
-f, --full
The pattern is normally only matched against the process name.
When -f is set, the full command line is used.
OSX (및 추론에 의해, BSD에서) -l
( long output )과 -f
( full argument list와 일치 )와 함께 완전한 명령이 표시됩니다 ( -i
대 / 소문자 구분 안함).
$ pgrep -fil ssh
OUTPUT:
33770 ssh: abc@192.168.0.123-22 [mux] t
man 페이지 :
-l Long output. For pgrep, print the
process name in addition to the
process ID for each matching
process. If used in conjunction
with -f, print the process ID and
the full argument list for each
matching process. For pkill, dis-
play the kill command used for
each process killed.
grep -v 옵션을 사용하면 요청 된 패턴을 모두 반환합니다.
ps -ef | grep <process> | grep -v grep
pgrep -u user | xargs ps -f -p
grep
프로세스 를 제거하기 위해 패턴의 일부로 대괄호를 사용할 수 있습니다.
ps -ef | grep '[t]ty'
당신은이 작업을 수행 할 수 있습니다 ps
및 pgrep
:
ps -fp $(pgrep -d, tty)
function ppgrep() { pgrep "$@" | xargs ps fp 2> /dev/null; }
그렇지 않으면 검색과 일치하는 프로세스가 없으면 전체ps
사용 메밀 라가 덤프 됩니다.