pgrep 출력에 프로세스에 제공된 매개변수가 포함되어 있습니까?

pgrep 출력에 프로세스에 제공된 매개변수가 포함되어 있습니까?

기존 스크립트의 다음 코드 조각은 xvfb프로세스를 확인하고 해당 프로세스가 특정 포트에서 수신 대기하는지 여부를 확인하는 데 사용됩니다.

  my_list=`pgrep -u $CurrentUserID -fl Xvfb | grep :${XVFBPORT}`
  process_list=`pgrep -fl Xvfb | grep :${XVFBPORT}`

Xvfb 프로세스는 다음 형식으로 시작됩니다.

  Xvfb :619  -fp /usr/share/fonts/X11/misc # i.e. in this case XVFBPORT is 619

분명히 이것은 우분투에서 예상대로 작동하지 않습니다. 왜냐하면 출력은 pgrep -fl Xvfb 다음과 같기 때문입니다:

  4812 Xvfb

, 끝에 ":619"가 없습니다. 분명히 그것은 약간의 추가 배관 공사로 쉽게 고칠 수 있을 것 같습니다 ps.

pgrep스크립트에서 예상하는 출력을 제공하는 다른 배포판이나 구성이 있습니까 ?

답변1

pgrep최신 버전의 from에는 procps-ng이 옵션이 있습니다 -a.

   -a, --list-full
          List  the  full  command line as well as the process ID.

따라서 다음과 pgrep -afl Xvfb | grep 619같이 인쇄되어야 합니다.

  4812 Xvfb :619  -fp /usr/share/fonts/X11/mis

내 Debian Jessie(테스트)에는 이 옵션이 존재하고 설치된 패키지는 이지만 procps-ng 3.3.9이 옵션이 도입되었을 때 버전을 찾을 수 없습니다. 옵션이 에는 있지만 procps-ng에는 없을 수도 있습니다 procps.

관련 정보