Window on top 명령에서 FILTERING을 사용할 때 오류가 발생했습니다.

Window on top 명령에서 FILTERING을 사용할 때 오류가 발생했습니다.

결과를 필터링해 보세요맨 위명령을 받은창에서 필터링을 누르고 o여기 튜토리얼에 설명된 대로 필터를 입력합니다.http://man7.org/linux/man-pages/man1/top.1.html

COMMAND=iTerm2하지만 예를 들어 다른 명령을 입력하면 invalid order오류가 발생합니다.

문제의 애니메이션 GIF를 여기에서 볼 수 있습니다:https://i.stack.imgur.com/Qhhtl.jpg

  • 운영 체제: Mac OS Catalina 버전: 10.15.2

답변1

o필터가 켜져 있지 않음BSD 탑, 이것은 일종의입니다.

     o       Change the order in which the display is sorted.  The sort key
     names include cpu, res, size, time.  The default is cpu.

원하는 방식으로 필터링할 수 있는 방법이 있는지 잘 모르겠습니다.

o따라서 누른 다음 Enter를 누를 수 있지만 COMMAND작동 COMMAND=iTerm2하지 않습니다.

또는 단일 PID를 필터링하는 옵션을 top사용하여 실행할 수 있지만 iTerm2는 여러 프로세스를 실행할 수 있습니다.-pid

top -pid $(pgrep iTerm2 | head -1)

답변2

Mac 터미널 Zsh에서 top 명령은 OP의 질문에서 알 수 있듯이 기존 Linux 구현과 많은 차이점이 있습니다. 모든 iTerm2 프로세스를 필터링하는 좋은 솔루션을 찾았습니다.

top -pid $(pgrep -d " -pid " iTerm2)

플래그로 구분된 PID 목록을 반환합니다 -pid. 첫 번째 -pid플래그는 기본 초기 PID를 포함합니다.


편집: 나는 이 방법을 더 쉽게 활용하고 싶었기 때문에 zsh 함수를 만들었습니다 topg. 내 쉘 스크립트에 대한 피드백을 환영합니다. 기본적으로 [-g|--grep] 플래그가 추가된 상단 래퍼입니다. 수정하는 대로 업데이트를 게시하겠습니다.

사용법에 관해서는 공백으로 구분된 다양한 프로세스 이름의 문자열을 전달하거나 여러 플래그를 함께 추가할 수 있습니다. top이 응답하는 다른 명령은 전달됩니다.

사용 예:

topg -g ssh --grep firefox -g "WindowServer Gitify"

function topg () {
    emulate -L zsh
    zmodload zsh/zutil || return

    # Default option values can be specified as (value).
    local help filter_commands

    zparseopts -D -F -K -a -- \
        {h,-help}=help    \
        {g,-grep}+:=filter_commands || return

    if (( $#help )); then
        local top_help=`top -h`
        local lines
        lines=( ${(f)top_help} )
        lines[1]=${lines[1]:gs/top/tops}
        lines[3]=(${lines[3]}, "$(echo "\t\t")[-g <pattern> [<pattern2>] | --grep <pattern> [<pattern2>]]")

        print -rC1 -- \
        ${(F)lines}
        return
    fi

    if (( $#filter_commands )); then
        local -a array
        local flag vals

        for flag vals in "${(@)filter_commands}"; do
            array+=(${=vals})
        done

        eval "top -pid $(pgrep -d " -pid " "${(@)array}") "${@:1}""
        return
    else
        eval "top "${@:1}""
        return
    fi

}

내가 말했듯이, 나는 어떤 피드백이라도 환영합니다.

관련 정보