하나 이상의 PID를 pgrep에서 top의 -p 매개변수로 전송합니다.

하나 이상의 PID를 pgrep에서 top의 -p 매개변수로 전송합니다.

나는 다음과 같은 훌륭한 질문을 보았습니다.

이전 명령의 출력을 다음 명령의 인수로 전달합니다.

그리고 성공하지 못한 채 내가 원하는 것을 얻으려고 노력했습니다.

나는 종종 maxima/lisp 프로세스를 보고 싶어하며 top/htop/etc를 실행하는 대신 "maxima.core"를 검색하고 해당 검색에서 반환된 pid를 top의 "-p" 플래그에 대한 입력으로 사용할 수 있다고 생각합니다. 둘 이상을 반환하면 별 문제가 되지 않습니다.

1.) PID를 알고 있으면 다음을 사용할 수 있습니다.

top -p 10815 -o S -d 0

2.) PID를 얻으려면 다음을 수행합니다.

ps -fu <user> | pgrep -f maxima.core

다음과 같은 목록이 출력됩니다.

10814
11989

하지만연결하려는 시도가 실패했습니다. 내 시도는 주로 다음과 같습니다.

<user>@<user> ~ $ top -o S -d 0 -p $(ps -fu <user> | pgrep -f maxima.core)

또한 이 결과를 병합해 보았습니다.일반적으로 둘 이상의 "n"으로 시작하는 위치 인수를 얻는 방법은 무엇입니까?

top -o S -d 0 -p "${(ps -fu <user> | pgrep -f maxima.core)[@]}"

하지만 대체성이 좋지 않다는 불만을 토로하고 있다.

나는 bash에 크게 의존합니다.

답변1

귀하의 버전이 ( ) 옵션을 pgrep지원 하는 경우 이를 사용하여 쉼표로 구분된 PID 목록을 제공할 수 있습니다 .-d--delimitertop

top -o S -d 0 -p "$(pgrep -d, -u <user> -f maxima.core)"

관련 정보