pgrep
각 프로세스에 대한 모든 정보를 제공 할 수있는 방법 ps
이 있습니까? 나는 ps
통과 할 수 있다는 것을 알고 grep
있지만 많은 타이핑이 필요하며 grep
원하지 않는 프로세스 자체 도 제공합니다 .
답변
pgrep
의 출력 옵션은 꽤 제한적입니다. ps
중요한 정보를 얻으려면 정보를 다시 보내야합니다 . 에서 bash 함수를 사용하여이를 자동화 할 수 있습니다 ~/.bashrc
.
function ppgrep() { pgrep "$@" | xargs --no-run-if-empty ps fp; }
그런 다음 명령을 호출하십시오.
ppgrep <pattern>
답변
결합 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
단독으로 실행 파일 이름 만 일치하고 실행 파일 이름 만 표시했습니다.
전체 일치를 원하지 않으면 전체 명령 줄을 볼 수 없습니다 🙁 [ 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'
당신은이 작업을 수행 할 수 있습니다 ps
및 pgrep
:
ps -fp $(pgrep -d, tty)