ps aux | grep 命令不显示类别

ps aux | grep 命令不显示类别

当我在 ps aux 命令之后通过管道传输到 grep 时,它没有显示列表顶部的类别(USER、PID、%CPU、%MEM 等)我能做些什么吗?

ps aux --sort -rss | grep $USER | head -n 4
user01      1610  0.0  0.3  17968 10156 ?        Ss   Jan19   0:01 /lib/systemd/systemd --user

user01      1611  0.0  0.0 104400  2108 ?        S    Jan19   0:00 (sd-pam)

user01      1617  0.0  0.1  48216  4812 ?        S<sl Jan19   0:00 /usr/bin/pipewire

user01      1618  0.0  0.1  32108  4256 ?        Ssl  Jan19   0:00 /usr/bin/pipewire-media-session

我期望在最顶部看到以下内容:

USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

答案1

除了省略标题行的问题之外,ps aux通过管道输出grep $USER是一种不可靠的方式,只能选择用户拥有的进程,它可能会:

  • 完全不匹配,因为该USER列可能被截断

  • 匹配输出行中的其他位置(例如命令名称或参数)

您可以做一些类似的黑客行为ps aux --sort -rss | grep -E "^(${USER:0:7}|USER)" | head -n 5,但是如果您只想要当前用户的进程,您可以简单地aps命令中省略该选项:

$ ps ux --sort -rss | head -n 5
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
steeldr+    1279  0.0  4.5 416748 44804 ?        Rl   03:27   0:12 /usr/bin/qterminal
steeldr+    1102  0.0  4.2 907696 42420 ?        Sl   03:27   0:11 /usr/bin/lxqt-panel
steeldr+    1095  0.0  3.9 853820 39056 ?        Sl   03:27   0:00 /usr/bin/pcmanfm-qt --desktop --profile=lxqt
steeldr+    1101  0.0  2.2 405672 22252 ?        Sl   03:27   0:00 /usr/bin/lxqt-notificationd

相关内容