현재 실행 중인 kate 편집기의 PID를 알고 싶다고 가정해 보겠습니다(kate는 단지 예일 뿐이며 많은 프로그램에서 설명한 것과 동일한 방식으로 작동합니다). 그래서 나는 ps aux | grep kate
.
출력은 다음과 같습니다.
seifert 35523 0.0 0.2 448724 25144 ? Sl 08:56 0:33 /bin/kate -b
seifert 1499179 0.0 0.0 12196 656 pts/0 S+ 21:52 0:00 grep --color=auto kate
첫 번째 줄은 내가 기대하는 것입니다. 그런데 두 번째는 뭔가요?
답변1
를 입력하면 ps aux|grep kate
이 작업이 시작됩니다 grep kate
. grep kate
이는 다음과 같이 처리됩니다 grep kate
(별칭이 있는 경우(이 예에서와 같이) 더 복잡함). 그리고 하위 문자열이 grep kate
있으므로 해당 행이 선택됩니다 .kate
kate
grep 명령이 필요하기 전에 프로세스 목록에서 프로세스를 가져오려면 필요한 pgrep
명령이 될 수 있습니다.
편집: pgrep pgrep
심지어 직접 찾지도 못했습니다.
답변2
이는 검색 중인 프로세스와 방금 입력한 명령에 대한 줄을 반환하기 때문입니다 grep kate
.
따라서 응답을 받으려면 다음 명령을 사용하십시오.
ps -fp $(pgrep -f '<your_search>')
pgrep -f
프로세스를 시작하기 위한 전체 명령(인수 포함)을 기반으로 프로세스의 PID를 검색합니다.
답변3
Wayne Werner의 답변을 인용하자면 다음과 같습니다.
문자 주위에 대괄호를 넣고 문자열 주위에 따옴표를 넣으면 정규식을 검색할 수 있습니다. 즉, "'f' 뒤에 'nord' 문자를 찾으세요." 그러나 패턴에 대괄호를 넣었으므로 이제 "f" 뒤에 "]"가 나타나므로 결과 목록에 grep이 표시되지 않습니다. 니토!
[f]를 사용하면 출력 오른쪽 diff에서 grep 명령의 마지막 줄을 얻지 못합니다. beetwen "ps aux | grep firefox" 및 "ps aux | grep [f]irefox"는 마지막 출력 줄입니다.
ps 결과에 "grep"이 표시되는 것을 방지하는 방법은 무엇입니까?
이를 원하지 않으면 ps aux | grep 'kate'
사용할 수 있는 프로세스 목록에서 마지막 grep 명령을 참조하십시오(예: process/command).
ps aux | grep '[k]ate'
[]
검색하는 모든 명령/프로세스에서 이 대괄호를 사용할 수 있습니다.
ps aux | grep '[c]ommand' or '[p]rocess'
pid만 가져오기 위해 사용할 수도 있습니다.
pidof kate
또는
pgrep kate
또는
ps -ef | grep [k]ate