답변:
프로그램 pgrep과는 pidof확실히 같은 것이 아니다,하지만 그들은 매우 유사합니다. 예를 들면 다음과 같습니다.
$ pidof 'firefox'
5696
$ pgrep '[i]ref'
5696
$ pidof '[i]ref'
$ printf '%s\n' "$?"
1
보시다시피 pidof에 일치하는 항목을 찾지 못했습니다 [i]ref. 이는 pidof program라는 프로그램과 관련된 모든 프로세스 ID 목록을 반환 하기 때문 program입니다. 반면에 pgrep re이름이 정규식과 일치하는 프로그램과 연관된 모든 프로세스 ID 목록을 리턴합니다 re.
가장 기본적인 형태에서 동등성은 실제로 다음과 같습니다.
$ pidof 'program'
$ pgrep '^program$'
또 다른 구체적인 예로, 다음을 고려하십시오.
$ ps ax | grep '[w]atch'
12 ? S 0:04 [watchdog/0]
15 ? S 0:04 [watchdog/1]
33 ? S< 0:00 [watchdogd]
18451 pts/5 S+ 0:02 watch -n600 tail log-file
$ pgrep watch
12
15
33
18451
$ pidof watch
18451
폭스는 pgrep정규 표현식을 사용하여 검색하지만 pidof그렇지는 않다고 언급했다 .
그러나 pgrep또한 더 많은 옵션을 사용할 수 있습니다 :
-u "$UID"당신은 현재 사용자에 속하는 프로세스 만 일치시킬 수 있습니다.--parent당신은 주어진 프로세스의 자식 프로세스를 찾을 수 있습니다.--oldest또는 --newest일치하는 프로세스를 선택할 수 있습니다 .각 프로세스가 어떤 패키지에 속하는지를 알아 봅시다 (적합한 시스템에서) :
$ dpkg -S "$(which pidof)"
sysvinit-utils: /bin/pidof
$ dpkg -S "$(which pgrep)"
procps: /usr/bin/pgrep