왜 ps aux |추가 히트 반환 [중복]

왜 ps aux |추가 히트 반환 [중복]

현재 실행 중인 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

kategrep 명령이 필요하기 전에 프로세스 목록에서 프로세스를 가져오려면 필요한 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

관련 정보