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

}

私が言ったように、私はどんなフィードバックでも歓迎します。

関連情報