pidof 또는 pgrep을 사용하여 Linux 프로세스의 PID를 찾는 방법

0
321

pidof 또는 pgrep을 사용하여 Linux 프로세스의 PID를 찾는 방법
fatmawati achmad zaenuri/Shutterstock.com
Linux 프로세스의 프로세스 ID를 찾으려면 “pidof examplename”과 같은 pidof 명령을 사용하십시오. PID 이름의 일부만 알고 있는 경우 “pgrep examplenamefragment”를 대신 사용할 수 있습니다. “examplename” 및 “examplenamefragment”를 검색하려는 용어로 바꿉니다.

Linux 프로세스로 작업한다는 것은 프로세스 ID 또는 PID를 아는 것을 의미하는 경우가 많습니다. 실행 중인 각 소프트웨어에 부여되는 고유 번호입니다. 그것이 무엇인지 알아내는 두 가지 방법이 있습니다.

목차

Linux 프로세스 ID란 무엇입니까?
pidof 명령으로 Linux PID를 얻는 방법
Linux에서 pgrep 명령으로 PID를 찾는 방법

Linux 프로세스 ID란 무엇입니까?

내부적으로 Linux는 프로세스 ID 또는 PID라고 하는 고유한 ID 번호를 할당하여 실행 중인 프로세스를 추적합니다. 실행 중인 모든 응용 프로그램, 유틸리티 및 데몬에는 PID가 있습니다.

PID는 단순한 정수 값입니다. 새로 시작된 프로세스는 발행된 마지막 PID보다 1 높은 PID를 수신합니다. 따라서 PID가 가장 높은 프로세스가 가장 최근에 실행된 프로세스입니다. 이는 시스템이 PID의 최대값에 도달할 때까지 계속됩니다.

PID의 상한은 32768입니다. 이 수치에 도달하면 Linux는 처음으로 돌아가 이전에 PID를 소유했던 프로세스가 종료되어 사용 가능해진 PID를 찾습니다.

PID가 1인 프로세스는 Linux가 부팅 프로세스에 의해 시작될 때 시작되는 첫 번째 프로세스입니다. 시스템 기반 시스템에서 systemd . 다른 시스템에서는 init일부 Linux 배포판은 OpenRc 또는 s6과 같은 대안을 사용합니다.

때때로 프로세스의 PID를 발견하는 것이 유용한데, 그 이유는 일반적으로 해당 프로세스에서 어떤 작업을 수행하기를 원하기 때문입니다. 다음은 프로세스의 PID를 알 때 프로세스의 PID를 찾는 두 가지 다른 방법입니다. 이름 프로세스의.

관련된: Unix PID는 무엇이며 어떻게 작동합니까?

pidof 명령으로 Linux PID를 얻는 방법

그만큼 pidof 명령은 “PID”와 “of”의 조합으로 생각할 수 있습니다. 이 프로세스의 PID가 무엇인지 묻는 것과 같습니다. 매개 변수 없이 명령을 사용하면 아무 작업도 수행되지 않습니다. 자동으로 명령 프롬프트로 돌아갑니다. 프로세스 이름을 지정해야 합니다.

pidof bash

pidof 명령으로 bash 쉘의 PID 찾기

pidof Bash 셸의 PID가 8304임을 알려줍니다. ps 명령. 우리가 해야 할 일은 전화하는 것뿐입니다. ps 매개변수가 없습니다. 현재 세션에서 실행 중인 프로세스에 대해 보고합니다.

ps

ps 명령으로 프로세스 나열

왜냐하면 ps 자신을 포함하여 찾을 수 있는 모든 프로세스에 대해 보고합니다. bash 과정과 ps 프로세스 실행. 예상대로 bash 프로세스는 동일한 PID를 가집니다. pidof 에 보고했다.

터미널 창이 두 개 이상 열려 있는 경우 pidof 그들 모두에 대해보고 할 것입니다.

pidof bash

일치 프로세스의 여러 인스턴스에 대한 pidof 보고

PID는 가장 높은 것부터 가장 낮은 것, 즉 가장 최근 것부터 가장 오래된 것으로 나열됩니다.

ps 명령을 사용하여 Linux 프로세스를 모니터링하는 방법

관련된ps 명령을 사용하여 Linux 프로세스를 모니터링하는 방법

이것이 표시되지 않는 것은 귀하가 이러한 모든 프로세스의 소유자가 아닐 수도 있다는 것입니다. pidof 소유자와 관계없이 이름이 일치하는 모든 프로세스를 찾습니다. 출력을 파이핑하여 더 자세히 살펴보겠습니다. grep. 우리는 -e (모든 프로세스 선택) 및 -f (전체 목록) 옵션 포함 ps .

ps -ef | grep bash

ps 및 grep을 사용하여 bash 프로세스의 소유자 식별

bash 프로세스 중 두 개는 사용자 dave에 속하고 세 번째는 사용자 mary에 속합니다.

때로는 하나의 응용 프로그램이 많은 프로세스를 생성하며 각 프로세스는 자체 PID를 받습니다. 이것이 우리가 Google 크롬으로 얻는 것입니다.

pidof chrome

프로세스가 많은 단일 애플리케이션에 대해 많은 PID를 찾는 pidof

관련된: Chrome에 열려 있는 프로세스가 많은 이유는 무엇입니까?

기본적으로, pidof 모든 프로세스에 대해 보고합니다. 원하는 경우 가장 최근의 프로세스만 요청할 수 있습니다. 그만큼 -s (싱글 샷) 옵션이 바로 그런 역할을 합니다.

pidof -s chrome

여러 PID가 있는 n 응용 프로그램에서 가장 최근 PID 찾기

사용하려면 kill 모든 것을 수동으로 죽이는 명령 chrome 프로세스는 지루할 것입니다. 프로세스 목록을 변수로 캡처하면 해당 변수를 kill 명령. 그만큼 kill 명령은 명령에 여러 PID를 허용할 수 있으므로 기꺼이 입력을 수락하고 모든 프로세스를 종료합니다.

pid=$(pidof chrome)
echo $pid
kill $pid
pidof chrome

많은 PID를 포함하는 변수를 kill 명령에 전달

첫 번째 명령은 다음에서 출력을 수집합니다. pidof 이름을 지정하는 변수에 할당합니다. pid. 우리는 필요하지 않습니다 echo 변수가 무엇을 담고 있는지 보여주기 위한 것입니다.

우리는 변수를 kill 명령 후 사용 pidof Chrome 프로세스가 남아 있는지 다시 한 번 확인하십시오. 그들은 모두 살해당했습니다.

한 가지 단점 pidof 쉘 스크립트의 PID를 반환하지 않는다는 것입니다. 의 PID를 반환합니다. bash 스크립트를 실행 중인 쉘. 스크립트를 실행 중인 셸을 보려면 다음을 사용해야 합니다. -x (스크립트) 옵션.

pidof -x sleep-loop.sh
ps -e | grep bash

쉘 스크립트를 실행하는 bash 쉘의 PID 찾기

pidof bash 셸의 PID를 반환하고 ps 두 개의 쉘이 실행 중임을 보여줍니다. 하나는 다음을 실행하는 셸입니다. pidof 명령이고 다른 하나는 스크립트를 실행하는 셸입니다.

관련된: Linux에서 grep 명령을 사용하는 방법

Linux에서 pgrep 명령으로 PID를 찾는 방법

그만큼 pgrep 명령은 다음과 같이 작동합니다. pidof Linux에서 프로세스 ID를 얻을 때. 그러나 검색 단서와 정확히 일치하는 프로세스를 찾을 뿐만 아니라 이름이 같은 프로세스의 PID도 반환합니다. 포함 검색 텍스트.

다음은 Firefox가 실행 중인 컴퓨터의 예입니다.

pgrep firefox
pgrep fire
pgrep fox
pgrep refo

다른 검색 단서를 사용하여 Firefox의 PID 찾기

이러한 모든 명령은 Firefox 프로세스를 찾고 PID를 반환합니다. 그러나 다음 명령을 입력한 경우:

pgrep refo

자체적으로 pgrep이 Fi를 찾았는지 어떻게 알 수 있습니까?리포x가 아니라 p라는 데몬재수하다md?

추가하면 -l (목록 이름) 옵션을 사용하면 pgrep은 PID와 함께 프로세스 이름을 나열합니다.

pgrep refo -l

-l 옵션을 사용하여 pgrep 목록을 프로세스 이름으로 만들기

일치하는 프로세스의 인스턴스가 여러 개 있으면 모두 나열됩니다.

pgrep bash

pgrep으로 여러 PID 나열

출력과 반대 순서인 오름차순으로 나열됩니다. pidof. 가장 오래된 프로세스부터 최신 프로세스까지 나열됩니다. 우리가 본 것처럼 pidof나열된 모든 프로세스가 반드시 귀하에게 속한 것은 아닙니다.

그만큼 -u (사용자 ID) 옵션을 사용하면 검색 텍스트와 일치하고 명명된 사용자가 소유한 프로세스를 검색할 수 있습니다.

pgrep bash -u dave

사용자 dave의 bash 프로세스 PID 나열

이번에는 결과에서 세 개의 bash 프로세스를 볼 수 있습니다. 다른 하나는 다음에서 사용 중입니다. mary.

pgrep bash -u mary

사용자 mary의 bash 프로세스 PID 나열

사용자 이름을 쉼표로 구분된 목록으로 함께 묶을 수 있습니다.

pgrep bash -u dave,mary -l

두 사용자의 bash 프로세스 PID 나열

그리고 특정 사용자에 대한 모든 프로세스를 보도록 요청할 수 있습니다.

pgrep -u dave -l

특정 사용자가 소유한 모든 PID 나열

전체 명령줄을 보려면 -a (전체 목록) 옵션.

pgrep -u dave -a

-a 옵션을 사용하여 각 프로세스의 전체 명령줄 나열

PID 소유권에 대한 정보

모든 시스템 프로세스가 루트 사용자가 소유하는 것은 아닙니다. 물론 많은 사람들이 있지만 전부는 아닙니다. 예를 들어 다음 명령이 작동합니다.

pgrep avahi-daemon

그러나이 명령은 실패합니다.

pgrep -u root avahi-daemon

그것은 실패하기 때문에 root 해당 프로세스를 소유하지 않습니다. 실제 소유자는 “avahi”라는 시스템 사용자입니다. 올바른 사용자 이름을 사용하면 명령이 작동합니다.

pgrep -u avahi avahi-daemon

조심해야 할 약간의 문제입니다.

관련된: 개발자와 매니아를 위한 최고의 Linux 노트북