pgrep에 전체 프로세스 정보를 표시하는 방법 정보를 제공 할

pgrep각 프로세스에 대한 모든 정보를 제공 할 수있는 방법 ps이 있습니까? 나는 ps통과 할 수 있다는 것을 알고 grep있지만 많은 타이핑이 필요하며 grep원하지 않는 프로세스 자체 도 제공합니다 .



답변

pgrep의 출력 옵션은 꽤 제한적입니다. ps중요한 정보를 얻으려면 정보를 다시 보내야합니다 . 에서 bash 함수를 사용하여이를 자동화 할 수 있습니다 ~/.bashrc.

function ppgrep() { pgrep "$@" | xargs --no-run-if-empty ps fp; }

그런 다음 명령을 호출하십시오.

ppgrep <pattern>


답변

결합 pgrepps사용 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단독으로 실행 파일 이름 만 일치하고 실행 파일 이름 만 표시했습니다.
    전체 일치를 원하지 않으면 전체 명령 줄을 볼 수 없습니다 🙁 [ https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=526355#15 ]

* 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.

맥 OS

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에 -l 옵션을 사용하여 이름과 프로세스 ID를 얻을 수 있다고 생각합니다.

ps는 모든 종류의 포맷 옵션을 지원하므로 입력 내용을 저장하려는 별칭을 만들 것입니다. grep 프로세스를 출력에서 ​​제외하는 간단한 방법은 grep 프로세스를 제외하기위한 추가 파이프를 포함하도록 grep -v grep합니다.


답변

grep프로세스 를 제거하기 위해 패턴의 일부로 대괄호를 사용할 수 있습니다.

ps -ef | grep '[t]ty'

당신은이 작업을 수행 할 수 있습니다 pspgrep:

ps -fp $(pgrep -d, tty)