当我在 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
,但是如果您只想要当前用户的进程,您可以简单地a
从ps
命令中省略该选项:
$ 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