웹사이트 검색

초보자를 위한 Linux pgrep 명령 자습서(예제 10개)


이 페이지에서

  1. Linux pgrep 명령
  2. Q1. 특정 사용자가 소유한 프로세스의 ID를 찾는 방법은 무엇입니까?\n
  3. Q2. 일치하는 프로세스의 pgrep 인쇄 수를 만드는 방법은 무엇입니까?\n
  4. Q3. 출력에서 사용자 지정 구분 기호를 사용하는 방법은 무엇입니까?\n
  5. Q4. pgrep 검색 대소 문자를 구분하지 않는 방법은 무엇입니까?\n
  6. Q5. pgrep 목록 프로세스 이름도 만드는 방법은 무엇입니까?\n
  7. Q6. pgrep list를 전체 명령으로 만드는 방법은 무엇입니까?
  8. Q7. pgrep을 최신 프로세스만 표시하는 방법은 무엇입니까?\n
  9. Q8. pgrep이 가장 오래된 프로세스만 표시하게 만드는 방법은 무엇입니까?\n
  10. 결론

패턴을 검색한 다음 출력에 일치하는 텍스트를 출력하는 Linux의 grep 명령어에 대해 이미 알고 계실 것입니다. 요구 사항이 시스템에서 현재 실행 중인 프로세스에 대한 선택 정보를 가져오기 위해 이러한 종류의 처리를 적용하는 것이라면 어떻게 될까요?

정확히 이 작업을 수행할 수 있는 명령줄 도구(pgrep)가 있다는 사실에 기뻐할 것입니다. 이 자습서에서는 이해하기 쉬운 몇 가지 예를 사용하여 pgrep의 기본 사항에 대해 설명합니다. 하지만 그 전에 여기에 있는 모든 예제는 Ubuntu 20.04 LTS 시스템과 Debian 10에서 테스트되었음을 언급할 가치가 있습니다.

리눅스 pgrep 명령

Linux의 pgrep 명령을 사용하면 사용자가 이름 및 기타 속성을 기반으로 프로세스를 조회할 수 있습니다. 구문은 다음과 같습니다.

pgrep [options] pattern

도구 매뉴얼 페이지에서 설명하는 방법은 다음과 같습니다.

pgrep looks through the currently running processes and lists the process IDs which match the 
selection criteria to stdout. All the criteria have to match.

다음은 pgrep 명령의 작동 방식에 대한 좋은 아이디어를 제공하는 Q&A 형식의 예입니다.

Q1. 특정 사용자가 소유한 프로세스의 ID를 찾는 방법은 무엇입니까?

이것은 -u 명령줄 옵션을 사용하여 수행할 수 있습니다. 예를 들어, 사용자 himanshu가 소유한 gedit 프로세스의 ID를 찾으려면 다음과 같은 방식으로 pgrep을 사용하십시오.

pgrep -u himanshu gedit

내 경우에 이 명령이 생성한 출력은 다음과 같습니다.

Q2. 일치하는 프로세스의 pgrep 인쇄 수를 만드는 방법은 무엇입니까?

도구가 ID 자체가 아닌 개수만 인쇄하도록 하려면 -c 명령줄 옵션을 사용하십시오. 예를 들어, 사용자 himanshu가 소유한 프로세스 수를 알려면 다음 명령을 실행하십시오.

pgrep -c -u himanshu

다음은 이 명령이 내 시스템에서 생성한 출력입니다.

83

Q3. 출력에서 사용자 지정 구분 기호를 사용하는 방법은 무엇입니까?

기본적으로 출력의 프로세스 ID는 새 줄로 구분됩니다. 그러나 원하는 경우 -d 명령줄 옵션을 사용하여 구분 기호를 변경할 수 있습니다.

예를 들어 구분 기호로 콜론(:)을 사용하고 싶었기 때문에 다음과 같은 방식으로 pgrep 명령을 실행했습니다.

pgrep -u himanshu -d:

다음은 명령이 생성한 출력입니다.

1793:1794:1807:1811:1813:1817:1820:1914:1917:1922:1925:1936:1938:1954:1974:1978:1980:1982:1993:1999
:2008:2009:2012:2020:2024:2034:2036:2043:2048:2049:2051:2052:2055:2064:2068:2073:2074:2085:2088:
2093:2094:2095:2098:2101:2104:2117:2125:2161:2162:2168:2173:2182:2201:2213:2233:2245:2266:2279:
2388:2409:2430:2456:2473:2564:2647:3085:3108:3178:3284:3297:3320:3325:3467:3487:3980:4040:4658:
5668:5721:5777:6271:6281:6512:6808

Q4. pgrep 검색 대소 문자를 구분하지 않는 방법은 무엇입니까?

기본적으로 pgrep 검색은 대소문자를 구분합니다. 그러나 원하는 경우 대소문자를 구분하지 않도록 설정할 수 있습니다. 이를 위해서는 -i 명령줄 옵션을 사용해야 합니다.

예를 들어:

pgrep -i gedit

Q5. pgrep 목록 프로세스 이름도 만드는 방법은 무엇입니까?

이를 위해 -l 명령줄 옵션을 사용합니다.

예를 들면 다음과 같습니다.

pgrep -u himanshu -l

다음은 내 시스템에서 생성된 출력의 일부입니다.

1793 systemd
1794 (sd-pam)
1807 gnome-keyring-d
1811 gdm-x-session
1813 Xorg
1817 dbus-daemon
1820 gnome-session-b
1914 ssh-agent
1917 gvfsd
1922 gvfsd-fuse
1925 at-spi-bus-laun
1936 dbus-daemon
1938 at-spi2-registr
1954 gnome-shell
1974 ibus-daemon
1978 ibus-dconf
1980 ibus-x11
1982 ibus-portal
1993 gnome-shell-cal
1999 evolution-sourc
2008 dconf-service
2009 gvfs-udisks2-vo
2012 goa-daemon
2020 gvfs-mtp-volume
2024 gvfs-goa-volume
...
...
...

따라서 프로세스 ID 외에 프로세스 이름도 출력에 생성된 것을 볼 수 있습니다.

Q6. pgrep list를 전체 명령으로 만드는 방법은 무엇입니까?

pgrep에서 각 프로세스를 시작하는 데 사용된 전체 명령을 표시하려면 -a 명령줄 옵션을 사용합니다.

pgrep -u himanshu -a
1793 /lib/systemd/systemd --user
1794 (sd-pam)
1807 /usr/bin/gnome-keyring-daemon --daemonize --login
1811 /usr/lib/gdm3/gdm-x-session --run-script env GNOME_SHELL_SESSION_MODE=ubuntu gnome-session --session=ubuntu
1813 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3
1817 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
1820 /usr/lib/gnome-session/gnome-session-binary --session=ubuntu
1914 /usr/bin/ssh-agent /usr/bin/im-launch env GNOME_SHELL_SESSION_MODE=ubuntu gnome-session --session=ubuntu
1917 /usr/lib/gvfs/gvfsd
1922 /usr/lib/gvfs/gvfsd-fuse /run/user/1000/gvfs -f -o big_writes
1925 /usr/lib/at-spi2-core/at-spi-bus-launcher
1936 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 3
1938 /usr/lib/at-spi2-core/at-spi2-registryd --use-gnome-session
1954 /usr/bin/gnome-shell
1974 ibus-daemon --xim --panel disable
1978 /usr/lib/ibus/ibus-dconf
1980 /usr/lib/ibus/ibus-x11 --kill-daemon
1982 /usr/lib/ibus/ibus-portal
1993 /usr/lib/gnome-shell/gnome-shell-calendar-server
1999 /usr/lib/evolution/evolution-source-registry
2008 /usr/lib/dconf/dconf-service
2009 /usr/lib/gvfs/gvfs-udisks2-volume-monitor
2012 /usr/lib/gnome-online-accounts/goa-daemon
2020 /usr/lib/gvfs/gvfs-mtp-volume-monitor
2024 /usr/lib/gvfs/gvfs-goa-volume-monitor
2034 /usr/lib/gnome-online-accounts/goa-identity-service
2036 /usr/lib/gvfs/gvfs-gphoto2-volume-monitor
2043 /usr/lib/gvfs/gvfs-afc-volume-monitor

Q7. pgrep을 최신 프로세스만 표시하는 방법은 무엇입니까?

모든 프로세스 대신 pgrep이 가장 최근 프로세스만 출력하도록 하려면 -n 명령줄 옵션을 사용하여 수행할 수 있습니다.

예를 들면 다음과 같습니다.

pgrep -u himanshu -n -l

다음은 이 명령이 생성한 출력입니다.

7163 thunderbird

Thunderbird가 실제로 사용자 himanshu에 의해 시작된 가장 최근의 프로세스임을 확인할 수 있습니다.

Q8. pgrep이 가장 오래된 프로세스만 표시하게 만드는 방법은 무엇입니까?

이를 위해 -o 명령줄 옵션을 사용합니다.

pgrep -u himanshu -o -l

이 명령이 생성한 출력은 다음과 같습니다.

1793 systemd

결론

따라서 pgrep이 매우 유용한 명령임을 알 수 있습니다. 여기에서 논의한 명령줄 옵션 연습을 마치면 도구 매뉴얼 페이지로 이동하여 자세한 내용을 알아볼 수 있습니다.